在 MariaDB 版本 10.1 中,我们尝试将整数转换为字符串,例如varchar(300)
. 请参阅下面的示例 SQL 以获取最小化示例。
该convert()
函数可以将整数转换为固定长度数据类型char(300)
,但如果尝试转换为可变长度数据类型,则会出现语法错误varchar(300)
。
该cast()
函数似乎具有相同的行为。
我们的问题:
为什么该函数在转换为 时失败varchar(300)
?如果可能的话,我们如何让它发挥作用?
select version()
;
-- OK
-- 10.1.12-MariaDB
set @i = cast(1 as int);
-- OK
select @i
;
-- OK
-- 1
select convert(@i, char(300) ) as col
;
-- OK
-- 1
select convert(@i, varchar(300)) as col
;
-- Error
/* SQL Error [1064] [42000]: (conn=284164) You have an
error in your SQL syntax; check the manual that corresponds
to your MariaDB server version for the right syntax to use
near 'varchar(300)) as col
*/
select cast(@i as char(300) ) as col
;
-- OK
-- 1
select cast(@i as varchar(300)) as col
;
-- Error
/* SQL Error [1064] [42000]: (conn=284164) You have an
error in your SQL syntax; check the manual that corresponds
to your MariaDB server version for the right syntax to use
near 'varchar(300)) as col
*/
VARCHAR
因为支持强制转换目标类型正如手册中明确指出的。