我知道 Snowflake 有自己的 ANSI SQL 扩展,例如 UNDROP。
但是,我想知道 Snowflake 使用什么“方言”(因为需要更好的 SQL 词)?
我在文档中读到:
Snowflake 支持标准 SQL,包括 ANSI SQL:1999 的子集和 SQL:2003 分析扩展 https://docs.snowflake.com/en/user-guide/querying.html
那么,Snowflake 使用的 SQL 在任何地方都可以识别吗?我想知道当我遇到 SQL 语法问题并且想在 stackoverflow 上发布时的情况。我是否使用
tag:snowflake-sql
这似乎只是 snowflake-cloud-data-platform
的同义词,还是 stackoverflow 上还有另一个与 SQL 相关的标签我应该使用?显然,我想获得最佳的特定于 SQL 的答案,因此如果可能的话,我不想过多限制标签。
ANSI SQL:1999、SQL:2003 和 Snowflake 之间是否存在差异列表?
就像每个 DB 一样,他们支持 90% 的标准 X 和 +10% 的差异,因为这样做对他们来说很便宜,或者它允许暴露 DB 所表达的底层概念框架。
这实际上意味着“没有标准”来捕捉“他们所做的”。
另一个不同的问题可能是彻底颠覆这个问题并问“为什么需要一个标准”。
对于此处帖子的情况,
snowflake-cloud-data-platform
是当前接受标签。只要您没有使用太多通用 sql
或其他特定于数据库的标签,使用在 Snowflake 上运行的任何 SQL 都是可以接受的。
许多人,比如 Gordan,会用标准 ANSI SQL 给出答案,这些答案很棒,但有时可以用更密集的形式来表达,因为雪花不太严格的表达式树规则。
想要了解标准的另一个原因是经典的,“我们想要编写标准 SQL,以便我们可以稍后移动”,我经常认为,您应该编写可以表达的最快执行 SQL,并移动提供程序并重新 -在新数据库中表达意图,而不是运行优化不佳的“随处运行”SQL,这样每个月的成本要高出 30%,因为 4 年后可能会有一个为期 6 个月的数据库迁移项目。
根据我的经验,我认为 Snowflake SQL 比 MySQL / T-SQL 更接近 Postgres
精彩的讨论。 我特别喜欢这一段的理性和乐观,开头是“就像每个供应商一样,他们支持 X% 的标准和 Y% 的不同......”