我有以下查询,需要转换 id到 varchar
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;
但它们不起作用,请建议。
用途:
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) ,您只能转换为:
VARCHAR
我认为你最好的选择是使用 CHAR。
CHAR
您将需要 cast或 convert作为一个 CHAR数据类型,没有 varchar数据类型,您可以强制/转换数据到:
cast
convert
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函数使用以下内容:
expr
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方法将 char和 int连接在一起。 总而言之,对我有效的方法是: < br > < br > 假设你的 char是‘ c’,int是‘ i’,那么查询就是: ...GROUP_CONCAT(CONCAT(c,' ', CAST(i AS CHAR))...
GROUP_CONCAT
char
int
...GROUP_CONCAT(CONCAT(c,' ', CAST(i AS CHAR))...
也应该能够做这样的事情:
Select (id :> VARCHAR(10)) as converted__id_int from t9