我有以下查询,需要将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;
但它们不起作用。请建议。
答案 0 :(得分:189)
您需要cast
或convert
作为CHAR
数据类型,没有varchar
数据类型可以将数据转换/转换为:
select CAST(id as CHAR(50)) as col1
from t9;
select CONVERT(id, CHAR(50)) as colI1
from t9;
请参阅以下SQL - 实际操作 - 在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)
您的原始查询的语法是向后的。
答案 1 :(得分:32)
你得到的是因为“VARCHAR”不是一个有效的类型。根据MySQL文档(http://dev.mysql.com/doc/refman/5.5/en/cast-functions.html#function_cast),您只能转换为:
我认为你最好的选择是使用CHAR。
答案 2 :(得分:12)
是
SELECT id || '' FROM some_table;
or SELECT id::text FROM some_table;
是postgresql,但mySql不允许这样做!
mySql中的捷径:
SELECT concat(id, '') FROM some_table;
答案 3 :(得分:3)
我没有MySQL,但有RDBMS(Postgres等)你可以使用hack
SELECT id || '' FROM some_table;
连接进行隐式转换。
答案 4 :(得分:2)
我解决了将整数列x varchar
列与
where CAST(Column_name AS CHAR CHARACTER SET latin1 ) collate latin1_general_ci = varchar_column_name
答案 5 :(得分:0)
使用:
SELECT cast(CHAR(50),id) as colI1 from t9;
答案 6 :(得分:0)
我将以一般性的方式回答这个问题,并非常感谢上述贡献者
我在MySQL Workbench上使用MySQL。尝试使用char
方法将int
和GROUP_CONCAT
连接在一起时,我遇到了类似的问题。
总之,对我有用的是:
让我们说你的char
是' c'并且int
是' i'因此,查询变为:
...GROUP_CONCAT(CONCAT(c,' ', CAST(i AS CHAR))...
答案 7 :(得分:0)
还应该能够执行以下操作:
Select (id :> VARCHAR(10)) as converted__id_int
from t9