有没有办法使用 Visual Studio 进行 SQL 标准兼容查询?

Is there a way to make SQL standard compliant queries using Visual Studio?

我只是想知道 SQL 2019 Professional 是否有 SQL 标准合规性验证器(可以设置为 strict : 只有绝对兼容的语法才会被接受)。如果它也支持本地语言就好了,但我已经习惯了那种 CLR-only 的东西(我真的不知道为什么可能是因为链接。 .. 我可能完全错了,但是......我实际上不知道并猜测了)。

重要的是它需要符合标准,而不仅仅是 SQL 服务器兼容。没有在标准中的是错误的。

目标是使 SQL 代码完全独立于 DBMS。感谢您花时间阅读我的问题。

The goal is to make SQL code that is completely independent of the DBMS.

不可能的目标,除非你打算完全放弃写作 SQL。这也许令人难过,但不同的数据库在非常基本的事情上有所不同,挑选和选择他们想要的标准部分。令人高兴的是,像 SELECTJOINGROUP BY 这样的 major 是常见的,但细节并不常见。

您可以将它们想象成不同时间和地区的口头语言的方言。我最熟悉的是英语,但确实所有语言都在发展和变化。我可以莎士比亚的英语,但我不会那样的英语。在某些情况下它会在语法上不正确,使用未知词和常用词的替代含义。

以下只是数据库之间差异很大的一些特性的一些示例:

  1. 间隔。使用标准语法向日期添加间隔是 interval + '1 day'。这在不同的数据库中差异很大。
  2. 部分数据库不支持FULL JOIN
  3. 一些数据库不支持递归 CTE。一些使用 recursive 关键字;有些没有。
  4. 有些数据库不支持 FROM 子句中的 VALUES() 构造函数。
  5. 一些数据库允许 FROM 子句是可选的。
  6. 该标准具有漂亮的功能,例如 FILTER 和功能相关的聚合 ids.that 很少有数据库支持
  7. 数据类型的限制差异很大——例如,较长的字符串是什么。
  8. 标准使用FETCH限制结果,有些数据库不支持。
  9. 将字符串解析为日期并将日期格式化为字符串完全依赖于数据库。
  10. 提取 date/time 组件在标准中使用 extract(),但实际上很少有数据库支持该功能。

这些只是我脑海中浮现出的一些差异——绝不意味着完整,甚至也不是最重要的。我只想指出,你想做的事是不可能的。