zoukankan      html  css  js  c++  java
  • SQL 中数据类型的转换 转

    转自: http://blog.163.com/liufupanhao@126/blog/static/128465170201111210446407/

    感谢博主的分享!

    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)大值数据类型 大值数据类型表现出与小值数据类型相同的隐式和显式转换行为,特别是 varchar、nvarchar 和 varbinary 数据类型。但是,应该考虑以下原则:

    从 image 到 varbinary(max) 的转换与反向转换是隐式转换,text 与 varchar(max)、ntext、nvarchar(max) 之间的转换也是隐式转换。 从大值数据类型(如 varchar(max))到小值数据类型(如 varchar)的转换是隐式转换,但如果大值相对于指定长度的小值数据类型显得太大,则产生截断。 从 varchar、nvarchar 或 varbinary 到其相应的大值数据类型的转换都是隐式执行的。 从 sql_variant 数据类型到大值数据类型的转换是显式转换。 大值数据类型不能转换为 sql_variant 数据类型。 (2)xml 数据类型 当您将 xml 数据类型显式或隐式转换为字符串或二进制数据类型时,xml 数据类型的内容将根据一组规则进行序列化。

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

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

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

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

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

    (5)截断结果和舍入结果 将字符或二进制表达式(char、nchar、nvarchar、varchar、binary 或 varbinary)转换为其他数据类型的表达式时,可截断数据,仅显示部分数据,或返回错误(因为结果太短而无法显示)。除了下表显示的转换,其他到 char、varchar、nchar、nvarchar、binary 和 varbinary 的转换都将被截断。

  • 相关阅读:
    百度的hao123.com篡改浏览器首页,解决办法
    图层叠加
    按日期统计数据,如何初始化一年的数据
    ORACLE的监听日志太大,客户端无法连接
    防火墙上开放Oracle服务端口1521的方法
    Java利用POI生成Excel强制换行
    poi jsp xls
    poi合并单元格同时导出excel
    使用CSS设置滚动条样式以及如何去掉滚动条的方法
    java环境变量的配置
  • 原文地址:https://www.cnblogs.com/ry123/p/2736847.html
Copyright © 2011-2022 走看看