Kusto 与 Microsoft SQL Server 之间的 MS-TDS/T-SQL 差异

下面是 Kusto 与 SQL Server 的 T-SQL 实现之间的主要差异的部分列表。

CREATE、INSERT、DROP、ALTER 语句

Kusto 不支持通过 MS-TDS 修改架构或数据,也不支持上述 T-SQL 语句。

相关子查询

Kusto 不支持 SELECTWHEREJOIN 子句中的相关子查询。

TOP 风格

Kusto 会忽略 WITH TIES,并将查询作为常规 TOP 计算。 Kusto 不支持 PERCENT

游标

Kusto 不支持 SQL 游标。

流量控制

Kusto 不支持流控制语句,但少数情况除外,如 IF THEN ELSE 子句,它与 THENELSE 批处理具有相同的架构。

数据类型

根据查询的不同,返回的数据的类型可能与 SQL Server 中的数据类型不同。 在这里,一个明显的示例是 TINYINTSMALLINT 之类的类型,它们在 Kusto 中没有等效项。 因此,需要 BYTEINT16 类型值的客户端可以改为获取 INT32INT64 值。

结果中的列顺序

SELECT 语句中使用星号时,每个结果集中的列顺序在 Kusto 和 SQL Server 之间可能有所不同。 在这些情况下,使用列名的客户端会工作得更好。 如果 SELECT 语句中没有星号字符,则会保留列序号。

结果中的列名

在 T-SQL 中,多个列可能有相同的名称。 这在 Kusto 中是不允许的。 如果名称发生冲突,则列名在 Kusto 中可能会不同。 但是,至少会保留其中一列的原始名称。

ANY、ALL 和 EXISTS 谓词

Kusto 不支持谓词 ANYALLEXISTS

递归 CTE

Kusto 不支持递归公用表表达式。

动态 SQL

Kusto 不支持动态 SQL 语句(以内联方式执行由查询生成的 SQL 脚本)。

WITHIN GROUP

Kusto 不支持 WITHIN GROUP 子句。

TRUNCATE 函数

Kusto 中 TRUNCATE 函数 (ODBC) 的工作方式类似于 ROUND,这意味着结果将是最接近的值,而不是 SQL 中返回的较小的值。