MySQL 数字类型转换函数(concat/cast)。
创新互联公司专业为企业提供泸州网站建设、泸州做网站、泸州网站设计、泸州网站制作等企业网站建设、网页设计与制作、泸州企业网站模板建站服务,10多年泸州做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
1、将Int 转为varchar经常用 concat函数,比如concat(8,’0′) 得到字符串 ’80′。
2、将varchar 转为Int 用 cast(a as signed) a为varchar类型的字符串。
总结:类型转换和SQL Server一样,就是类型参数有点点不同 : CAST(xxx AS 类型) , CONVERT(xxx,类型)。
扩展资料:
可用的类型:
二进制,同带binary前缀的效果 : BINARY
字符型,可带参数 : CHAR()
日期 : DATE
时间: TIME
日期时间型 : DATETIME
浮点数 : DECIMAL
整数 : SIGNED
无符号整数 : UNSIGNED
cast函数运行示例
参考资料:mysql-百度百科
写个存储过程吧,我这里只有sql server的测试环境,我照着语法改成mysql的,没法测试如果有问题再问
create proc test
as
begin
declare @i int
update 表名 set MODEL_ID=-1
update 表名 set MODEL_ID=CONVERT(int,MODEL_NAME)
where ISNUMERIC(MODEL_NAME)=1
while(exists(select 1 from 表名 where MODEL_ID=-1))
begin
select @i=1001
while(exists(select 1 from 表名 where MODEL_ID=@i))
select @i=@i+1
update 表名 set MODEL_ID=@i
where MODEL_NAME =
(select MODEL_NAME from 表名 where MODEL_ID=-1 limit 1)
end
end
CAST(expr AS type), CONVERT(expr,type) , CONVERT(expr USING transcoding_name)
CAST() 和CONVERT() 函数可用来获取一个类型的值,并产生另一个类型的值。
这个类型 可以是以下值其中的 一个:
BINARY[(N)]
CHAR[(N)]
DATE
DATETIME
DECIMAL
SIGNED [INTEGER]
TIME
UNSIGNED [INTEGER]
示例:
select cast(1.1 as int)--------------1
强制类型转换。比如f担肌曹可丨玖查雪肠磨loat a=3.678;那么(int)a的值就是3;就是把小数点后边的数据直接删掉
字符串类型的数字默认在比较大小时,往往会遇到一些坑,例如:在10和9比较大小时字符串类型的数字会以为9比10大,但事实上我们想要比较的结果是109,这是为什么呢?其实字符串在比较大小时,比较的是它对应的ASCII码,1的ASCII码比9对应的ASCII码小,系统就会认为109。 这时我们可以使用MySQL的 CAST() 函数,将想要转换的字符串转换成想要的类型。
例如:字符串‘123.45’可以转成整数,DECIMAL默认取得整数,也可以使用SIGNED
当然也可以指定小数位数,5代表了要取的数字位数(整数位和小数位和),2代表要取到的小数位数。
转换完成就可以用来进行后期的数值比较了!
方法一: CAST('123' AS SIGNED);
方法二: CONVERT('123',SIGNED);
方法三: '123'+0; // 强制隐形转换