将int转换为varchar

时间:2013-03-12 18:04:20

标签: mysql sql database casting mariadb

我有以下查询,需要将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;

但它们不起作用。请建议。

8 个答案:

答案 0 :(得分:189)

您需要castconvert作为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),您只能转换为:

  • BINARY [(N)]
  • CHAR [(N)]
  • DATE
  • DATETIME
  • DECIMAL [(M [,d)]
  • SIGNED
  • [INTEGER]
  • TIME
  • UNSIGNED [INTEGER]

我认为你最好的选择是使用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方法将intGROUP_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