是否可以使用Visual Studio进行符合SQL标准的查询?

时间:2019-12-07 08:06:32

标签: sql .net visual-studio sql-standards

我只是想知道是否存在用于Visual Studio 2019 Professional的SQL标准合规性验证器(可以将其设置为 strict :仅接受绝对合规的语法)。如果它也支持本地语言,那就太好了,但是我已经习惯了仅CLR 这样的东西(我真的不知道为什么可能是因为链接...我也许绝对是错的,但是...我实际上不知道并且猜测了一下。

重要的一点是它不仅需要符合SQL Server,而且还必须符合标准。标准中没有的是错误。

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

1 个答案:

答案 0 :(得分:1)

  

目标是使SQL代码完全独立于DBMS。

不可能的目标,除非您根本不打算编写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(),但实际上很少有数据库支持该功能。

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