有没有办法使用 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。这也许令人难过,但不同的数据库在非常基本的事情上有所不同,挑选和选择他们想要的标准部分。令人高兴的是,像 SELECT
、JOIN
和 GROUP BY
这样的 major 是常见的,但细节并不常见。
您可以将它们想象成不同时间和地区的口头语言的方言。我最熟悉的是英语,但确实所有语言都在发展和变化。我可以读莎士比亚的英语,但我不会写那样的英语。在某些情况下它会在语法上不正确,使用未知词和常用词的替代含义。
以下只是数据库之间差异很大的一些特性的一些示例:
- 间隔。使用标准语法向日期添加间隔是
interval + '1 day'
。这在不同的数据库中差异很大。
- 部分数据库不支持
FULL JOIN
。
- 一些数据库不支持递归 CTE。一些使用
recursive
关键字;有些没有。
- 有些数据库不支持
FROM
子句中的 VALUES()
构造函数。
- 一些数据库允许
FROM
子句是可选的。
- 该标准具有漂亮的功能,例如
FILTER
和功能相关的聚合 ids.that 很少有数据库支持
- 数据类型的限制差异很大——例如,较长的字符串是什么。
- 标准使用
FETCH
限制结果,有些数据库不支持。
- 将字符串解析为日期并将日期格式化为字符串完全依赖于数据库。
- 提取 date/time 组件在标准中使用
extract()
,但实际上很少有数据库支持该功能。
这些只是我脑海中浮现出的一些差异——绝不意味着完整,甚至也不是最重要的。我只想指出,你想做的事是不可能的。
我只是想知道 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。这也许令人难过,但不同的数据库在非常基本的事情上有所不同,挑选和选择他们想要的标准部分。令人高兴的是,像 SELECT
、JOIN
和 GROUP BY
这样的 major 是常见的,但细节并不常见。
您可以将它们想象成不同时间和地区的口头语言的方言。我最熟悉的是英语,但确实所有语言都在发展和变化。我可以读莎士比亚的英语,但我不会写那样的英语。在某些情况下它会在语法上不正确,使用未知词和常用词的替代含义。
以下只是数据库之间差异很大的一些特性的一些示例:
- 间隔。使用标准语法向日期添加间隔是
interval + '1 day'
。这在不同的数据库中差异很大。 - 部分数据库不支持
FULL JOIN
。 - 一些数据库不支持递归 CTE。一些使用
recursive
关键字;有些没有。 - 有些数据库不支持
FROM
子句中的VALUES()
构造函数。 - 一些数据库允许
FROM
子句是可选的。 - 该标准具有漂亮的功能,例如
FILTER
和功能相关的聚合 ids.that 很少有数据库支持 - 数据类型的限制差异很大——例如,较长的字符串是什么。
- 标准使用
FETCH
限制结果,有些数据库不支持。 - 将字符串解析为日期并将日期格式化为字符串完全依赖于数据库。
- 提取 date/time 组件在标准中使用
extract()
,但实际上很少有数据库支持该功能。
这些只是我脑海中浮现出的一些差异——绝不意味着完整,甚至也不是最重要的。我只想指出,你想做的事是不可能的。