Конвертировать INT в VARCHAR SQL


341

Я использую Sybase, и я делаю select, который возвращает мне столбец с именем «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 field_name FROM table_name. Оба верны. Я не знаю почему. Но когда я пытаюсь указать «где» в конце выбора, используя преобразование или нет, я получаю ту же ошибку: неявное преобразование из типа данных «VARCHAR» в «INT» не допускается. Используйте функцию CONVERT для выполнения этого запроса
Murilo

3
@Murilo Это потому, что ошибка не в том, что вы думаете. Ошибка говорит вам, что ваш код пытается использовать там, varcharгде это intнеобходимо. Вам нужно написать свой фактический оператор SQL, чтобы мы могли вам помочь.
Тобберот

14
@ Тобберот, для чего это стоит, я только что приземлился здесь, прибегая к помощи. Частью ценности 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 пробелы в
начале

13
Используйте LTRIM (STR ())
ashilon

2
STR () дает пробелы в начале переменной, которую вы конвертируете в строку. Это может быть хорошим выбором для преобразования десятичных переменных, но не для Int.
Ebleme


3

На самом деле вам не нужно использовать STR или Convert. Просто выберите «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.