1

我只是想知道是否有适用于 Visual Studio 2019 Professional 的 SQL 标准合规性验证器(可以设置为strict:只接受绝对合规的语法)。如果它也支持本机语言会很好,但我已经习惯了那种仅限 CLR的东西(我真的不知道为什么可能是因为链接......虽然我可能完全错了...我实际上不知道并猜测了)。

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

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

4

1 回答 1

2

目标是制作完全独立于 DBMS 的 SQL 代码。

不可能的目标,除非您完全放弃编写 SQL。这也许很可悲,但不同的数据库在非常基本的事情上有所不同,挑选和选择他们想要的标准部分。令人高兴的是,像 和 之类的主要内容很常见,但细节却不是。SELECTJOINGROUP BY

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

以下只是一些在数据库之间存在很大差异的功能的一些示例:

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

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

于 2019-12-07T13:51:44.420 回答