• 【Sqlserver系列】CAST和CONVERT


    1   概述

     本篇文章主要讲解SqlServer中类型转换涉及的两个函数:CAST和CONVERT。

    2   具体内容

    2.1  CAST

    (1)作用:将一种数据类型的表达式转换为另一种数据类型的表达式。

    (2)定义:

    1 CAST ( expression AS data_type)

    Parameters:

         expression:任何可转换为 data_type 的有效表达式;

         data_type:系统提供的目标数据类型。 该类型必须为基元(标量)类型。 使用的 data_type 取决于查询空间。 如果使用EntityCommand 执行查询,则数据类型为概念模型中定义的类型。  

    Return Value::

        返回与 data_type 相同的值。

    (3)例子

     1 SELECT CAST('2017' AS INT)  --2017
     2 
     3 SELECT CAST(2017 AS INT)   --2017
     4 
     5 SELECT CAST(2017.3 AS INT)   --2017
     6 
     7 SELECT CAST('2017.3' AS INT)--消息 245,级别 16,状态 1,第 1 行,在将 varchar 值 '2017.3' 转换成数据类型 int 时失败。
     8 
     9 SELECT CAST('2017.3' AS decimal) --2017
    10 
    11 SELECT CAST('2017.3' AS decimal(8,2))  --2017.30

     

    2.2  CONVERT

    (1)作用:将一种数据类型的表达式转换为另一种数据类型的表达式。

    (2)定义:

    1 CONVERT ( data_type [ ( length ) ] , expression [ , style ] )

    Parameters:

       expression:任何有效的表达式;

       data_type:目标数据类型。这包括 xml、bigint 和 sql_variant。不能使用别名数据类型;

       length:指定目标数据类型长度的可选整数。默认值为 30;

       style:指定 CONVERT 函数如何转换 expression 的整数表达式。如果样式为 NULL,则返回 NULL。该范围是由 data_type 确定的。有关详细信息,请参阅“备注”部分;

    Return Value:

       返回转换为 data_type 的 expression。

    (3)例子

    1 SELECT CONVERT(INT,'2017')   --2017
    2  
    3 SELECT CONVERT(INT,2017.3)   --2017
    4 
    5 SELECT CONVERT(INT,'2017.3')   --消息 245,级别 16,状态 1,第 1 行,在将 varchar 值 '2017.3' 转换成数据类型 int 时失败。
    6 
    7 SELECT CONVERT(decimal,'2017.3')  --2017
    8 
    9 SELECT CONVERT(decimal(8,2),'2017.3') --2017.30

     

    2.3  CAST和CONVERT比较

    (1)cast一般更容易使用,convert的优点是可以格式化日期和数值;

    (2)convert一般用于日期和时间值,小数之间转换,cast一般用于小数转数值和字符型;

    (3)converk显示转换,cast是强制转换;            
    (4)例子

     1 select CONVERT(varchar, getdate(), 120 )  --2017-08-13 03:56:14
     2  
     3 select replace(replace(replace(CONVERT(varchar, getdate(), 120 ),'-',''),' ',''),':','') --20170813035627
     4  
     5 select CONVERT(varchar(12) , getdate(), 111 ) --2017/08/13
     6  
     7 select CONVERT(varchar(12) , getdate(), 112 )  --20170813
     8  
     9 select CONVERT(varchar(12) , getdate(), 102 )  --2017.08.13
    10  
    11 select CONVERT(varchar(12) , getdate(), 101 )  --08/13/2017
    12  
    13 select CONVERT(varchar(12) , getdate(), 103 )  --13/08/2017
    14  
    15 select CONVERT(varchar(12) , getdate(), 104 )  --13.08.2017
    16  
    17 select CONVERT(varchar(12) , getdate(), 105 )  --13-08-2017
    18  
    19 select CONVERT(varchar(12) , getdate(), 106 )  --13 08 2017
    20  
    21 select CONVERT(varchar(12) , getdate(), 107 )  --08 13, 2017
    22  
    23 select CONVERT(varchar(12) , getdate(), 108 )  --03:57:39
    24   
    25 select CONVERT(varchar(12) , getdate(), 109 )  --08 13 2017  
    26  
    27 select CONVERT(varchar(12) , getdate(), 110 )  --08-13-2017
    28  
    29 select CONVERT(varchar(12) , getdate(), 113 )  --13 08 2017 0
    30  
    31 select CONVERT(varchar(12) , getdate(), 114 )  --03:58:08:200
    32  
    33 select getdate()  --2017-08-13 03:58:48.660
    34  
    35 select convert(char(8),getdate(),112)  --20170813
    36  
    37 select convert(char(8),getdate(),108)  --03:58:48
    38  
    39 select convert(char(8),getdate(),112)  --20170813

    参考表:

    3   参考文献

    【01】https://msdn.microsoft.com/zh-cn/library/bb399172(v=vs.110).aspx

    【02】https://technet.microsoft.com/zh-cn/library/ms187928(v=sql.105).aspx

    4   版权

     

    • 感谢您的阅读,若有不足之处,欢迎指教,共同学习、共同进步。
    • 博主网址:http://www.cnblogs.com/wangjiming/。
    • 极少部分文章利用读书、参考、引用、抄袭、复制和粘贴等多种方式整合而成的,大部分为原创。
    • 如您喜欢,麻烦推荐一下;如您有新想法,欢迎提出,邮箱:2016177728@qq.com。
    • 可以转载该博客,但必须著名博客来源。
  • 相关阅读:
    SSL JudgeOnline 1194——最佳乘车
    SSL JudgeOnline 1457——翻币问题
    SSL JudgeOnlie 2324——细胞问题
    SSL JudgeOnline 1456——骑士旅行
    SSL JudgeOnline 1455——电子老鼠闯迷宫
    SSL JudgeOnline 2253——新型计算器
    SSL JudgeOnline 1198——求逆序对数
    SSL JudgeOnline 1099——USACO 1.4 母亲的牛奶
    SSL JudgeOnline 1668——小车载人问题
    SSL JudgeOnline 1089——USACO 1.2 方块转换
  • 原文地址:https://www.cnblogs.com/wangjiming/p/7352256.html
Copyright © 2020-2023  润新知