zoukankan      html  css  js  c++  java
  • SQL 数据类型转换 总结

    1、数据类型转换:

    • (1)两种转换场合:
    • A:当两个结果集之间的数据进行比较或联和(union)的时候,如果两个结果集的数据类型不同时必须进行转换。
    • B:将Transact-SQL 得结果集返回给程序中的变量时,须将结果集的类型从SQL Server数据类型转换为变量的数据类型。
    • (2)两种转换方式:
    • A:自动进行的隐性转换(对于用户是不可见的)。 如:一个 smallint 变量和 int 变量比较时,将smallint 变量在比较前被隐性转换成 int 变量。
    • B:用户提供的显式转换(使用 CAST 或 CONVERT 函数进行显式转换)。
    • 2、函数语法

      语法

      CAST ( expression AS data_type [ (length ) ])

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

      参数

      expression 任何有效的表达式

      data_type 作为目标的系统提供数据类型。

      length 目标数据类型的长度(目标数据类型为nchar、nvarchar、char、varchar、binary 或 varbinary 时有效)。CONVERT默认为 30 个字符。

      style 目标数据格式的样式,如果 style 为 NULL,则返回的结果也为 NULL。

    注意

    A:目标数据类型不能使用别名数据类型。 nchar、nvarchar、char、varchar、binary 或 varbinary

    B:目标数据格式的样式在下列类型间转换时才有效

    (1)datetime 或 smalldatetime 数据转换成字符数据(nchar、nvarchar、char、varchar、nchar 或 nvarchar 数据类型)

    (2)已知日期或时间格式的字符数据转换成 datetime 或 smalldatetime 数据,或是字符串格式

    (3)用于将 float、real、money 或 smallmoney 数据转换成字符数据(nchar、nvarchar、char、varchar、nchar 或 nvarchar 数据类型)。

    3、备注(来着MSDN

    (1)大值数据类型

    大值数据类型表现出与小值数据类型相同的隐式和显式转换行为,特别是 varcharnvarcharvarbinary 数据类型。但是,应该考虑以下原则:

    • imagevarbinary(max) 的转换与反向转换是隐式转换,textvarchar(max)ntextnvarchar(max) 之间的转换也是隐式转换。
    • 从大值数据类型(如 varchar(max))到小值数据类型(如 varchar)的转换是隐式转换,但如果大值相对于指定长度的小值数据类型显得太大,则产生截断。
    • varcharnvarcharvarbinary 到其相应的大值数据类型的转换都是隐式执行的。
    • sql_variant 数据类型到大值数据类型的转换是显式转换。
    • 大值数据类型不能转换为 sql_variant 数据类型。
    • (2)xml 数据类型

      当您将 xml 数据类型显式或隐式转换为字符串或二进制数据类型时,xml 数据类型的内容将根据一组规则进行序列化。

      (3)文本和图像数据类型

      不支持对 textimage 数据类型进行自动数据类型转换。可将 text 数据显式转换为字符数据,将 image 数据转换为 binaryvarbinary,但最大长度是 8000 字节。如果试图进行不正确的转换,如将包含字母的字符表达式转换为 int,则 SQL Server 将返回错误消息。

      (4)输出的排序规则

      如果 CAST 或 CONVERT 的输出是字符串,并且输入也是字符串,则输出将与输入具有相同的排序规则和排序规则标签。如果输入不是字符串,则输出采用数据库的默认排序规则以及强制默认的排序规则标签。请参阅排序规则优先级 (Transact-SQL)

      若要为输出分配不同的排序规则,请将 COLLATE 子句应用于 CAST 或 CONVERT 函数的结果表达式。例如:

      SELECT CAST('abc' AS varchar(5)) COLLATE French_CS_AS

      (5)截断结果和舍入结果

      将字符或二进制表达式(charncharnvarcharvarcharbinaryvarbinary)转换为其他数据类型的表达式时,可截断数据,仅显示部分数据,或返回错误(因为结果太短而无法显示)。除了下表显示的转换,其他到 charvarcharncharnvarcharbinaryvarbinary 的转换都将被截断。

  • 相关阅读:
    支付宝 微信支付 移动支付 网站支付 开发
    2017 开源中国评比的前100个优秀开源项目
    解决error: Your local changes to the following files would be overwritten by merge
    Spring-JDBC配置
    server library[unbound] 服务未绑定解决办法
    MyEclipse安装EGit插件方法
    使用GitHub和Eclipse进行javaEE开发步骤
    Spring-AOP
    SQL-字符串连接聚合函数
    Spring-注入外部值
  • 原文地址:https://www.cnblogs.com/dyufei/p/2573979.html
Copyright © 2011-2022 走看看