Приведение 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 86

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

использование :

SELECT cast(CHAR(50),id) as colI1 from t9;

Я отвечу на это в общих чертах, и очень благодарен вышеуказанным вкладчикам.
Я использую MySQL на MySQL Workbench. У меня была аналогичная проблема, пытаясь сцепить char и int вместе с помощью GROUP_CONCAT метод. В общем, то, что сработало для меня это:

скажем, ваш char Это ' c ' и int Это "я", таким образом, запрос приобретает следующий вид:
...GROUP_CONCAT(CONCAT(c,' ', CAST(i AS CHAR))...