将 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;

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

486512 次浏览

用途:

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

之所以会出现这种情况,是因为 VARCHAR不是要强制转换的有效类型。根据 MySQL 文档(http://dev.mysql.com/doc/refman/5.5/en/cast-functions.html#function_cast) ,您只能转换为:

  • 二进制[(N)]
  • [(N)]
  • 日期
  • 日期时间
  • 十进制[(M [ ,D ])]
  • 签名[整数]
  • 时间
  • 未签名[整数]

我认为你最好的选择是使用 CHAR

您将需要 castconvert作为一个 CHAR数据类型,没有 varchar数据类型,您可以强制/转换数据到:

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


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

请参阅 SQL Fiddle上的以下 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;

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

 CONVERT(expr,type)

或者

 CONVERT(expr USING transcoding_name)

您最初的查询语法是反向的。

我没有 MySQL,但是有一些 RDBMS (Postgres 等) ,你可以在其中使用黑客技术

SELECT id || '' FROM some_table;

连接器执行隐式转换。

是的

SELECT id || '' FROM some_table;
or SELECT id::text FROM some_table;

但是 mySql 不允许这样!

MySql 中的捷径:

SELECT concat(id, '') FROM some_table;

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

where CAST(Column_name AS CHAR CHARACTER SET latin1 ) collate latin1_general_ci = varchar_column_name

我将概括地回答这个问题,并非常感谢以上的贡献者。
我在 MySQL 工作台上使用 MySQL。我也遇到过类似的问题,试图使用 GROUP_CONCAT方法将 charint连接在一起。 总而言之,对我有效的方法是: < br > < br > 假设你的 char是‘ c’,int是‘ i’,那么查询就是:
...GROUP_CONCAT(CONCAT(c,' ', CAST(i AS CHAR))...

也应该能够做这样的事情:

Select (id :> VARCHAR(10)) as converted__id_int
from t9