mariadb 将int转换为varchar

plupiseo  于 2022-11-08  发布在  其他
关注(0)|答案(8)|浏览(227)

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

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

5n0oy7gb

5n0oy7gb1#

您需要将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 - over:

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

原始查询的语法颠倒了。

lvmkulzt

lvmkulzt2#

因为VARCHAR不是有效的转换类型,根据MySQL文档(http://dev.mysql.com/doc/refman/5.5/en/cast-functions.html#function_cast),只能转换为:

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

我认为最好的办法是使用CHAR

rsaldnfx

rsaldnfx3#

是的

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

是postgresql,但mySql不允许这样做!
mySql中快捷方式:

SELECT concat(id, '') FROM some_table;
8nuwlpux

8nuwlpux4#

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

SELECT id || '' FROM some_table;

串连会执行隐含转换。

anauzrmj

anauzrmj5#

我解决了一个问题,比较一个整数列x和一个varchar
where CAST(Column_name AS CHAR CHARACTER SET latin1 ) collate latin1_general_ci = varchar_column_name

jpfvwuh4

jpfvwuh46#

用途:

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

dgsult0t7#

我将以一般性的方式回答这个问题,并非常感谢上述贡献者。
我在MySQL Workbench上使用MySQL。我在尝试使用GROUP_CONCAT方法将charint连接在一起时遇到了类似的问题。总之,对我有效的方法是:
假设您的char是'c',int是'i',那么,查询变成:
...GROUP_CONCAT(CONCAT(c,' ', CAST(i AS CHAR))...

6ojccjat

6ojccjat8#

也应该可以这样做:

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

相关问题