将int转换为varchar

我有下面的查询,需要将idvarchar

架构

 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; 

但他们不工作。 请build议。

您将需要convertconvertCHAR数据types,没有varchar数据types,您可以将数据转换/转换为:

 select CAST(id as CHAR(50)) as col1 from t9; select CONVERT(id, CHAR(50)) as colI1 from t9; 

在SQL小提琴中查看下面的SQL – in action:

 /*! 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; 

除了您试图转换为不正确的数据types的事实之外,您用于转换的语法不正确。 在expr是您的列或值的情况下, convert函数使用以下内容:

  CONVERT(expr,type) 

要么

  CONVERT(expr USING transcoding_name) 

您的原始查询语法倒退。

你得到的是因为“VARCHAR”是不是一个有效的types投入。 根据MySQL文档( http://dev.mysql.com/doc/refman/5.5/en/cast-functions.html#function_cast ),您只能投射到:

  • BINARY [(N)]
  • CHAR [(N)]
  • date
  • 约会时间
  • DECIMAL [(M [,d])]
  • [整数]
  • 时间
  • UNSIGNED [INTEGER]

我认为你最好的select是使用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等),您可以在其中使用黑客

 SELECT id || '' FROM some_table; 

连接进行隐式转换。

我解决了一个问题比较整数列xa varchar列与

“其中CAST(Column_name AS CHAR CHARACTER SET latin1)collat​​e latin1_general_ci = varchar_column_name”

为什么?

 mysql> SELECT CAST(1 AS CHAR) + CAST(1 AS CHAR); +-----------------------------------+ | CAST(1 AS CHAR) + CAST(1 AS CHAR) | +-----------------------------------+ | 2 | +-----------------------------------+ 1 row in set (0.00 sec) 

使用 :

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