适用范围:SQL Server
Azure 数据工厂中的 SSIS Integration Runtime
表达式可以包含数值、字符串和布尔文字。 表达式计算器支持多种数值,例如整数、小数和浮点常量。 表达式计算器还支持数值中包含科学记数法和指定表达式计算器如何处理值的 long 和 float 后缀。
数值文字
表达式计算器支持整型和非整型的数值数据类型。 它还支持血缘标识符,即包元素的唯一数字标识符。 谱系标识符是数字,但你不能用它们进行数学运算。
表达式计算器支持后缀,您可以使用这些后缀来指示表达式计算器处理数值的方式。 例如,你可以通过写入37L或37l表示整数37被视为长整数数据类型。
下表列出了数值的后缀。
| 后缀 | 说明 |
|---|---|
L 或 l |
长整型数值。 |
U 或 u |
无符号数值。 |
E 或 e |
科学记数法中的指数 |
下表列出了数值表达式元素及其正则表达式。
| 表达式元素 | 正则表达式 | 说明 |
|---|---|---|
表示为 D 的数字。 |
[0-9] |
任何数字。 |
科学记号法表示为 E。 |
[Ee][+-]?{D}+ |
大写或小写 e,+ 或 - 可选,D 根据自身的定义可以为一位数或多位数。 |
整数后缀表示为 IS。 |
(([lL]?[uU]?)|([uU]?[lL]?)) |
可选择使用 u 和 l 的大写或小写形式,或使用 u 和 l 的组合。
U 或 u 表示无符号值。
L 或 l 表示长整型值。 |
表示为 FS 的 float 后缀。 |
([f|F]|[l|L]) |
大写或小写 f 或 l。
F 或 f 表示浮点值(DT_R4数据类型)。
L 或 l 指示长值(DT_R8 数据类型)。 |
表示为 H 的十六进制数字。 |
[a-fA-F0-9] |
任何十六进制数字。 |
下表介绍了使用正则表达式语言的有效数值。
| 正则表达式 | 说明 |
|---|---|
{D}+{IS} |
一个至少带有一位数字(D)的整数数字文字,并且可选地带有长且无符号的后缀(IS)。 示例: 457, 785u, 986L, 7945ul和 。 |
{D}+{E}{FS} |
一个非整型数值,具有至少一个数字 (D)、科学计数法和 long 或 float 后缀。 示例: 4E8l、 13e-2f、 5E+L和 。 |
{D}*"."{D}+{E}?{FS} |
一个包含小数位的非整型数值,具有至少有一个数字 (D) 的小数部分、一个指数 (E)(可选)和一个 float 或 long 标识符 (FS)。 此数值的数据类型为 DT_R4 或 DT_R8。 示例: 6.45E3f、 .89E-2l、 1.05E+7F和 。 |
{D}+"."{D}*{E}?{FS} |
一个非整数数字文字,至少有一个有效位(D)、一个小数位、一个指数(E),以及一个浮点或一个长标识符(FS)。 此数值的数据类型为 DT_R4 或 DT_R8。 示例: 1.E-4f、 4.6E6L、 8.365E+2f和 。 |
{D}*.{D}+ |
具有一定精度和小数位数的非整型数值。 它具有一个小数位和带有至少一个数字 (D) 的小数部分。 此数值的数据类型为 DT_NUMERIC。 示例: .9、 5.8、 0.346和 。 |
{D}+.{D}* |
具有一定精度和小数位数的非整型数值。 它至少有一个有效数字()D和一个小数位。 此数值的数据类型为 DT_NUMERIC。 示例: 6.、 0.2、 8.0和 。 |
#{D}+ |
谱系标识符。 它由磅#()字符和至少一个数字(D)组成。 示例: #123. |
0[xX]{H}+{uU} |
以十六进制格式表示的数值。 其中包含一个零、一个大写或小写 x、至少一个大写 H 和无符号后缀(可选)。 示例:0xFF0A 和 0X000010000U。 |
有关表达式计算器所使用的数据类型的详细信息,请参阅 Integration Services 数据类型。
表达式中可以包含具有不同数据类型的数值。 当表达式计算器计算这些表达式时,会将数据转换为兼容的类型。 有关详细信息,请参阅 Integration Services Data Types in Expressions。
但是,一些数据类型间的转换要求显式转换。 表达式计算器提供了用于执行显式数据类型转换的转换运算符。 有关详细信息,请参阅转换(SSIS 表达式)。
将数值映射为 Integration Services 数据类型
表达式求值器对数值文字的转换方式如下:
根据后缀将整数数值映射为整数数据类型:
后缀 结果类型 无 DT_I4 UDT_UI4 LDT_I8 ULDT_UI8 重要
如果没有 long(
L或l)后缀,表达式计算器会将有符号值映射为 DT_I4 数据类型,将无符号值映射为 DT_UI4 数据类型(即使值溢出了该数据类型)。包含指数的数值文字可转换为DT_R4或DT_R8数据类型。 如果表达式包含长后缀,则转换为DT_R8。 如果包含浮点后缀,则转换为DT_R4数据类型。
如果非整数值文字包含
F或f,则映射到DT_R4数据类型。 如果包含L或l且数字为整数,则映射为 DT_I8 数据类型。 如果是实数,它映射到DT_R8数据类型。 如果包含长后缀,则转换为 DT_R8 数据类型。具有精度和小数位数的非整型数值将映射为 DT_NUMERIC 数据类型。
字符串文本
将字符串字面量用引号括起来。 表达式语言为常用转义字符(如非打印字符和引号)提供了一组转义序列。
字符串文字由零个或多个被引号引起来的字符组成。 如果字符串包含引号,请对引号进行转义,以便表达式能够正确解析。 字符串可以包含任何两字节字符,除了 \x0000,因为 \x0000 该字符是字符串的空终止符。
字符串中可包括需要转义序列的其他字符。 下表列出了字符串文字的转义序列。
| 转义序列 | 说明 |
|---|---|
\a |
警报 |
\b |
退格键 |
\f |
换页 |
\n |
新的一行 |
\r |
回车 |
\t |
水平制表符 |
\v |
垂直制表符 |
\" |
引号 |
\ |
反斜杠 |
\xhhhh |
十六进制表示的 Unicode 字符 |
布尔文本
表达式计算器支持常用的布尔值文字: True 和 False。 表达式评估器不区分大小写,允许任意大写和小写字母组合。 例如,TRUE 与 True 一样有效。
备注
在表达式中,必须用空格来界定一个布尔文本。