zoukankan      html  css  js  c++  java
  • 【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。
    • 可以转载该博客,但必须著名博客来源。
  • 相关阅读:
    springcloud之Feign(五)
    ElasticSearch
    SpringCloud之Hystrix介绍
    SpringCloud之Ribbon负载均衡(四)
    springcloud之Eureka集群配置(三)
    Problem08 输入数字求和
    Problem07 处理字符串
    Problem06 求最大公约数及最小公倍数
    Problem05 判断分数等级
    Problem04 分解质因数
  • 原文地址:https://www.cnblogs.com/wangjiming/p/7352256.html
Copyright © 2011-2022 走看看