我有以下查询,需要转换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;
但他们不工作。请建议。
您将需要cast
或convert
作为CHAR
数据类型,没有varchar
可以将数据转换/转换为的数据类型:
select CAST(id as CHAR(50)) as col1
from t9;
select CONVERT(id, CHAR(50)) as colI1
from t9;
请参阅SQL Fiddle上的以下 SQL(实际操作):
/*! 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),您只能转换为:
我认为你最好的选择是使用CHAR
.
是的
SELECT id || '' FROM some_table;
or SELECT id::text FROM some_table;
是 postgresql,但 mySql 不允许这样做!
mySql 中的捷径:
SELECT concat(id, '') FROM some_table;
我没有 MySQL,但有 RDBMS(Postgres 等),您可以在其中使用 hack
SELECT id || '' FROM some_table;
连接进行隐式转换。
我解决了一个将整数列 xavarchar
列与
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 Workbench 上使用 MySQL。我在尝试使用该方法将 achar
和 an连接在一起时遇到了类似的问题。总之,对我有用
的是:假设你是'c'并且是'i',所以,查询变成:int
GROUP_CONCAT
char
int
...GROUP_CONCAT(CONCAT(c,' ', CAST(i AS CHAR))...
也应该能够做这样的事情:
Select (id :> VARCHAR(10)) as converted__id_int
from t9