数据库CAST()函数和CONVERT()函数比较

    对简单类型转换,CAST()函数和CONVERT()函数的效果一致,只是语法不同。前者更易使用,而后者的优势是格式化时间和数值。在以下这几种情况,二者一样:    

    1-1.SELECT CONVERT(decimal(5,2), '123.477')             ==>123.48

    1-2.SELECT CONVERT(decimal, '123.477')                    ==>123

    1-3.SELECT CONVERT(int, '123')+3                             ==>126

    1-4.SELECT CONVERT(varchar(4), 'hello')                     ==>'hell'

    2-1.SELECT CAST('123' AS int)                                   ==>123

    2-2.SELECT CAST('123.477' AS decimal)+3                  ==>126

    2-3.SELECT CAST('123.477' AS decimal(9,2))               ==>123.48

    2-4.SELECT CAST('hello' AS varchar(4))                       ==>'hell'

    提问:SELECT CONVERT(int, '123.477')  和 SELECT CAST('123.477' AS int) 的写法对不?

    回答:不对,会报错。因为CAST()函数和CONVERT()函数都不能执行四舍五入或截断操作,所以要把int换成decimal,就像1-2 和 2-2 一样。

    语法总结:CAST (expression AS data_type)             

               CONVERT(data_type(length),data_to_be_converted,style)           <style是可选参数,上面的例子就没有用到>

    convert一般在时间类型(datetime,smalldatetime)与字符串类型(nchar,nvarchar,char,varchar)相互转换的时候常用到。

    如:

    SELECT GETDATE()                                                                   ==>2014-05-04 17:51:53.393
    SELECT CONVERT(VARCHAR(19),GETDATE())                              ==>05  4 2014  5:51PM
    SELECT CONVERT(VARCHAR(10),GETDATE(),110)                        ==>05-04-2014

    其中,style的对照表如下:

 

    

Style IDStyle 格式
100 或者 0mon dd yyyy hh:miAM (或者 PM)
101mm/dd/yy
102yy.mm.dd
103dd/mm/yy
104dd.mm.yy
105dd-mm-yy
106dd mon yy
107Mon dd, yy
108hh:mm:ss
109 或者 9mon dd yyyy hh:mi:ss:mmmAM(或者 PM)
110mm-dd-yy
111yy/mm/dd
112yymmdd
113 或者 13dd mon yyyy hh:mm:ss:mmm(24h)
114hh:mi:ss:mmm(24h)
120 或者 20yyyy-mm-dd hh:mi:ss(24h)
121 或者 21yyyy-mm-dd hh:mi:ss.mmm(24h)
126yyyy-mm-ddThh:mm:ss.mmm(没有空格)
130dd mon yyyy hh:mi:ss:mmmAM
131dd/mm/yy hh:mi:ss:mmmAM

    运用:如:select name,shool,address,convert(Varchar(10),age)+'岁' from Table_student

    总之,这两个函数在一些数据库里面,经常见到高手用的,看情况选择函数吧~

 

 

转载于:https://www.cnblogs.com/klbc/p/3707608.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值