Перетворити INT у VARCHAR SQL


341

Я використовую Sybase, і я роблю вибір, який повертає мені стовпець під назвою "iftype", але його тип int, і мені потрібно перетворити на varchar. Коли я намагаюся зробити вибір без функції перетворення, я отримую цю помилку:

Код помилки 257, стан SQL 37000: Непередбачене перетворення з типу даних "VARCHAR" в "INT" заборонено. Використовуйте функцію CONVERT для запуску цього запиту.

Я не знаю, як реалізувати функцію CONVERT. Хтось може мені допомогти, будь ласка?


5
Я думаю, вам це потрібно: msdn.microsoft.com/en-us/library/ms187928.aspx
Лайош Верес

Відповіді:


593

Використовуйте функцію перетворення.

SELECT CONVERT(varchar(10), field_name) FROM table_name

8
Помилково, це VARCHARна INTале я відповідав на питання, а неповідомлення про помилку.
Тобберот

2
Дякую. Але зараз я отримав ще одну помилку. Коли я намагаюся зробити такий тип Select (Вибрати): SELECT CONVERT (varchar (10), field_name) FROM table_name. Або навіть звичайний, як-от: SELECT_файл_ІМЕНЬ від імені таблиці. Обидва вірні. Я не знаю чому. Але коли я намагаюся, але "де" в кінці вибору, використовуючи конвертувати чи ні, я отримую ту саму помилку: невміле перетворення з типу даних "VARCHAR" в "INT" заборонено. Використовуйте функцію CONVERT для запуску цього запиту
Murilo

3
@Murilo Це тому, що помилка не в тому, що ти думаєш. Помилка говорить про те, що ваш код намагається використовувати а, varcharде intпотрібно. Вам потрібно написати фактичну заяву SQL для нас, щоб допомогти вам.
Тобберот

14
@Tobberoth, для чого це варто, я щойно приземлився сюди, гуглившись. Частина цінності SO полягає в тому, щоб отримати відповіді на майже будь-яке питання, навіть базове.
KyleMit

6
Я думаю, це має бути varchar(11)у випадку, якщо число є великим від’ємним числом.
Trisped

100

Використовуйте STRфункцію:

SELECT STR(field_name) FROM table_name

Аргументи

float_expression

Це вираження приблизного числового (плаваючого) типу даних із десятковою комою.

довжина

Чи загальна довжина. Сюди входять десятковий знак, знак, цифри та пробіли. За замовчуванням - 10.

десятковий

Чи кількість місць праворуч від десяткової коми. десяткова особа повинна бути меншою або дорівнює 16. Якщо десятків більше 16, результат підрізається до шістнадцяти місць праворуч від десяткової коми.

джерело: https://msdn.microsoft.com/en-us/library/ms189527.aspx


3
STR()повинна бути правильною відповіддю, вона простіша і менш схильна до помилок, ніж альтернативи.
HerrimanCoder

7
З якоїсь дивної причини це не спрацювало для мене, оскільки додавали вкладку перед текстом, не знаю чому. Вибране рішення все-таки спрацювало.
MaQy

3
пробіли str пробіли на передній частині перетвореного номера, що робить його марним
m12lrpv

13
Використовуйте LTRIM (STR ())
ашилон

2
STR () дає пробіли на передній частині змінної, яку ви перетворюєте на рядок. Перетворення десяткових змінних може бути гарним вибором, але не для Int.
Еблеме


3

Насправді вам не потрібно використовувати STR або конвертувати. Просто виберіть "xxx" + LTRIM (1) виконує завдання. Можливо, LTRIM використовує Convert або STR під кришкою.

LTRIM також усуває потребу в наданні довжини, і зазвичай 10 за замовчуванням достатньо хороші для перетворення цілих чисел у рядки.

SELECT LTRIM(ColumnName) FROM TableName

0

CONVERT(DATA_TYPE , Your_Column)є синтаксисом методу CONVERT в SQL. За допомогою цієї функції перетворення ми можемо перетворити дані стовпця, який знаходиться в правій частині кома (,), у тип даних у лівій частині коми (,).

SELECT CONVERT (VARCHAR(10), ColumnName) FROM TableName
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.