Cast (SSIS)

将表达式从一种数据类型显式转换为另一种数据类型。转换运算符还可以用作截断运算符。

语法


(type_spec) expression
        

参数

type_spec

有效的 SSIS 数据类型。

expression

有效的表达式。

结果类型

type_spec 的数据类型。有关详细信息,请参阅 Integration Services 数据类型

备注

以下关系图显示了合法的转换运算。

数据类型之间的合法转换和非法转换

转换为某些数据类型时需要参数。下表列出了这些数据类型及其参数。

数据类型 参数 示例

DT_STR

charcount

codepage

(DT_STR,30,1252) 将 30 个字节(即 30 个单字符)转换为使用 1252 代码页的 DT_STR 数据类型。

DT_WSTR

Charcount

(DT_WSTR,20) 将 20 个字节对(即 20 个 Unicode 字符)转换为 DT_WSTR 数据类型。

DT_BYTES

Bytecount

(DT_BYTES,50) 将 50 个字节的数据转换为 DT_BYTES 数据类型。

DT_DECIMAL

Scale

(DT_DECIMAL,2) 将数值转换为带 2 位小数的 DT_DECIMAL 数据类型。

DT_NUMERIC

Precision

Scale

(DT_NUMERIC,10,3) 将数值转换为带 3 位小数且精度为 10 的 DT_NUMERIC 数据类型。

DT_TEXT

Codepage

(DT_TEXT,1252) 将值转换为使用 1252 代码页的 DT_TEXT 数据类型。

使用转换运算符时,需要特别注意日期。

  • 字符串和 DT_DATE 间相互转换时,将使用转换的区域设置。

    ms141704.note(zh-cn,SQL.90).gif注意:
    日期以 ISO 格式 YYYY-MM-DD 表示,但区域设置首选项可能采用其他格式。

    将字符串转换为 DT_DATE 以外的日期数据类型时,可得到下列结果。

    数据类型 日期格式

    DT_DBDATE

    yyyy-mm-dd

    DT_FILETIME

    yyyy-mm-dd hh:mm:ss:fff

    DT_DBTIME

    hh:mm:ss

    DT_DBTIMESTAMP

    yyyy-mm-dd hh:mm:ss:fffffffff

在 DT_FILETIME 的日期格式中,fff 是一个 0 到 999 之间的值。该格式与 Windows SYSTEMTIME 数据类型相同。

在 DT_DBTIMESTAMP 的日期格式中,fffffffff 是 0 到 999999999 之间的值。

如果代码页为多字节字符代码页,则字节数和字符数可能会有所不同。将相同的 charcount 值从 DT_WSTR 转换为 DT_STR 时,可能导致转换后的字符串的最后字符被截断。如果在目标表的列中有足够的存储区,则可设置 charcount 参数的值以反映多字节代码页所需的字节数。例如,如果将字符数据转换为使用 936 代码页的 DT_STR 数据类型,则应将 charcount 的值设置希望数据包含的字符数的两倍;如果要转换使用 UTF-8 代码页的字符数据,则应将 charcount 值设置为四倍以上。

示例

以下示例将一个数值转换为整数。

(DT_I4) 3.57

以下示例将整数转换为使用 1252 代码页的字符串。

(DT_STR,1,1252)5

以下示例将三字符字符串转换为双字节字符。

(DT_WSTR,3)"Cat"

以下示例将整数转换为带两位小数的十进制数。

(DT_DECIMAl,2)500

此示例将整数转换为带 3 位小数且精度为 7 的数值。

(DT_NUMERIC,7,3)4000

以下示例将 FirstName 列中的值(定义为 nvarchar 数据类型且长度 50)转换为使用 1252 代码页的字符串。

(DT_STR,50,1252)FirstName

以下示例将字符串文字“True”转换为布尔值。

(DT_BOOL)"True"

请参阅

概念

运算符优先级和结合性

其他资源

运算符 (SSIS)

帮助和信息

获取 SQL Server 2005 帮助