Приведение int к varchar
у меня ниже запрос и нужно бросить id
до varchar
- схемы
create table t9 (id int, name varchar (55));
insert into t9( id, name)values(2, 'bob');
что я пробовал
select CAST(id as VARCHAR(50)) as col1 from t9;
select CONVERT(VARCHAR(50),id) as colI1 from t9;
но они не работают. Пожалуйста, предложите.
7 ответов:
вам понадобится
cast
илиconvert
какCHAR
данных нетvarchar
тип данных, который вы можете привести / конвертировать данные в:select CAST(id as CHAR(50)) as col1 from t9; select CONVERT(id, CHAR(50)) as colI1 from t9;
см. следующий SQL-in action-over at SQL Fiddle:
/*! Build Schema */ create table t9 (id INT, name VARCHAR(55)); insert into t9 (id, name) values (2, 'bob'); /*! SQL Queries */ select CAST(id as CHAR(50)) as col1 from t9; select CONVERT(id, CHAR(50)) as colI1 from t9;
помимо того, что вы пытались преобразовать в неверный тип данных, синтаксис, который вы использовали для
convert
был неверным. Элементconvert
функция использует следующее Гдеexpr
- это столбец или значение:CONVERT(expr,type)
или
CONVERT(expr USING transcoding_name)
ваш исходный запрос имел синтаксис назад.
вы получаете это, потому что" VARCHAR " не является допустимым типом для приведения. Согласно документам MySQL (http://dev.mysql.com/doc/refman/5.5/en/cast-functions.html#function_cast) Вы можете только бросить:
- BINARY [(N)]
- CHAR [(N)]
- дата
- DATETIME
- DECIMAL[(M [, D])]
- подпись
- [целое число]
- времени
- неподписанных [Целое число]
Я думаю, что лучше всего использовать CHAR.
да
SELECT id || '' FROM some_table; or SELECT id::text FROM some_table;
это postgresql, но mySql этого не позволяет!
короткий путь в mySql:
SELECT concat(id, '') FROM some_table;
У меня нет MySQL, но есть СУБД (Postgres, среди прочих), в которых вы можете использовать hack
SELECT id || '' FROM some_table;
конкатенат выполняет неявное преобразование.
Я решил проблему сравнения целочисленного столбца x a с
where CAST(Column_name AS CHAR CHARACTER SET latin1 ) collate latin1_general_ci = varchar_column_name
Я отвечу на это в общих чертах, и очень благодарен вышеуказанным вкладчикам.
Я использую MySQL на MySQL Workbench. У меня была аналогичная проблема, пытаясь сцепитьchar
иint
вместе с помощьюGROUP_CONCAT
метод. В общем, то, что сработало для меня это:
скажем, вашchar
Это ' c ' иint
Это "я", таким образом, запрос приобретает следующий вид:...GROUP_CONCAT(CONCAT(c,' ', CAST(i AS CHAR))...