process-mining
2024.10
true
UiPath logo, featuring letters U and I in white
Process Mining
Automation CloudAutomation Cloud Public SectorAutomation SuiteStandalone
Last updated 2024年11月11日

SQL differences between Snowflake and SQL Server

SQL Server vs. Snowflake

在本地开发环境中,转换在 SQL Server 上运行,而 Snowflake 在 Process Mining Automation Suite中运行。 尽管大多数 SQL 语句在 SQL Server 和 Snowflake 上都有效,但语法可能略有不同,从而可能导致不同的返回结果。

要编写可在两个数据库系统上运行的 SQL 语句,请执行以下操作:

  • 用双引号将字段名称写入,例如 Table."Field"
  • 防止使用 Snowflake 和 SQL Server 中不同的 SQL 函数,例如 string_agg()listagg()
    pm_utils包附带一组适用于这两种数据库类型的函数,请参阅 多个数据库。 例如,不使用string_agg()listagg()pm_utils.string_agg()将导致两个数据库的行为相同。 如果pm_utils不包含所需的函数,则应创建 Jinja 语句,以确保在每个数据库上调用正确的函数。

字符串连接

要合并为字符串,请使用pm_utils.concat()函数。 这将为 SQL Server 和 Snowflake 生成相同的结果。
示例: pm_utils.concat("This is a nice string", null) = "This is a nice string"不应使用+||等运算符连接字符串,因为这两个数据库的运算符不同(Snowflake 使用|| ,SQL Server 使用+ )。 此外,标准concat()函数在两个系统上的行为也不同:

SQL 服务器

Snowflake

null值将被忽略,并视为空字符串。
null值将导致整个结果为null

排序

在 Snowflake 和 SQL Server 中,排序的处理方式有所不同。

示例:... order by "Attribute_1" desc, "Attribute_2" ...

Null 值

SQL 服务器

Snowflake

默认情况下, null首先排序(升序)
默认情况下,null 将排在最后(升序)

Handling capital letters

SQL 服务器

Snowflake

大写字母按预期排序 (AaBbCc)

首先按大写字母排序,然后按非大写字母排序 (ABCabc)

虚线

示例:-Accountant-

SQL 服务器

Snowflake

排序时将忽略短划线(因此“-Accountant-”与“Accountant”相同)

短划线将在顶部排序

空格处理

当您按值“A”和“A”进行分组时,这在 SQL Server 中被视为一个值,但在 Snowflake 中被视为两个不同的值。 因此,如果您的数据可能会导致此问题,则建议进行修剪。

区分大小写

默认情况下,SQL Server 不区分大小写,而 Snowflake 区分大小写。 这意味着Table."Field" = "Some_value"Table."Field" = "SOME_VALUE"将在 SQL Server 中返回相同的结果集,但在 Snowflake 中可能会返回两个不同的结果集。

建议您更改本地 SQL Server 数据库的行为以匹配雪花行为,以防止出现任何问题。 这可以通过将数据库排序规则设置为区分大小写的值来实现。

  • SQL Server vs. Snowflake
  • 字符串连接
  • 排序
  • Null 值
  • Handling capital letters
  • 虚线
  • 空格处理
  • 区分大小写

此页面有帮助吗?

获取您需要的帮助
了解 RPA - 自动化课程
UiPath Community 论坛
Uipath Logo White
信任与安全
© 2005-2024 UiPath。保留所有权利。