问题标签 [ansi-sql]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql - 需要 ANSI 92 递归 SQL 语句
我目前正在将 SQL Server SQL 语句翻译成它们的 ANSI 通用等效语句,并且我坚持使用 WITH 语句的递归语句。
为了集中讨论这个问题,我将问题简化如下
如果我有两张桌子
报告单位
- col1:键
- col2: ParentReportingUnitKey
设施
- col1:键
- col2: ParentReportingUnitKey
此结构描述了向下至设施的报告单位的层次结构,其中报告单位可能有 0 .. 1 个直接父报告单位和 0 .. n 个子报告单位。
设施是链接到报告单位的“叶”记录。
我需要制作一个 ANSI 92 有效的 SQL 语句(或者最坏的情况下可以在 Oracle、DB2 和 SQL Server 上工作的语句),它将返回与层次结构中任何位置的给定报告单元相关的所有设施。
例如
- ReportingUnit R1 具有 ReportingUnit 子 R1.1 和 R1.2
- ReportingUnit R1.1 有子 R1.1.1、R1.1.2
ReportingUnit R1.2 有子 R1.2.1、R1.2.2
设施 F1 有一个父报告单元 R1.1.1
- 设施 F2 有一个父报告单元 R1.1.2
- 设施 F3 有一个父报告单元 R1.2.1
- 设施 F4 有一个父报告单元 R1.2.2
请记住,ReportingUnit 表中可能有 0 .. n 级递归,如果给定参数 ReportingUnit=R1,我如何从 SQL 语句中返回所有 4 个工具?
sql - 为什么 SQL ANSI-92 标准没有比 ANSI-89 更好地采用?
在我工作过的每一家公司,我发现人们仍在使用 ANSI-89 标准编写 SQL 查询:
而不是 ANSI-92 标准:
对于像这样一个非常简单的查询,可读性没有太大差异,但是对于大型查询,我发现将我的连接条件分组并列出表可以更容易地查看我在连接中可能遇到的问题,并且让我将所有过滤保留在 WHERE 子句中。更不用说我觉得外连接比Oracle中的(+)语法直观多了。
当我尝试向人们宣传 ANSI-92 时,使用 ANSI-92 优于 ANSI-89 是否有任何具体的性能优势?我会自己尝试,但是我们这里的 Oracle 设置不允许我们使用 EXPLAIN PLAN - 不希望人们尝试优化他们的代码,对吗?
database - 您如何编写独立于数据库的应用程序?
我的老板要求我只编写 ANSI SQL 以使其独立于数据库。但我了解到这并不容易,因为没有完全兼容 ANSI SQL 的数据库。SQL 代码很少能在不修改的情况下在数据库系统之间移植。
我看到人们用不同的方式使他们的程序数据库独立。例如:
- 将 SQL 语句外部化为资源文件。
- 编写许多提供程序类来支持不同的数据库。
- 只写简单的 SQL,远离高级函数/连接。
您是否总是编写“任何数据库就绪”的代码?还是仅在需要时才这样做?如果是,你是如何实现的?
sql - 如何从命令行测试 SQL 的有效性?
是否有一个很好的工具可以确保 SQL 查询是有效的 ANSI SQL,以及哪些 DBMS 将无法解释它?我找到了http://developer.mimer.com/validator但我想知道是否有命令行工具,最好是开源的。
sql - Sql Ansi 管理 DateTime 值
我正在开发一个多数据库系统。
我想要以秒为单位的两个日期之间的差异。
在SQL Server中,我得到:
DATEDIFF(second,stardate,enddate)
在MySql中:
TIME_TO_SEC(TIMEDIFF(stardate,enddate))
我的问题:
Sql Ansi 是否具有管理 DateTime 值的功能?
即:所有数据库都有通用的日期时间函数吗?
sql - 有只使用 ANSI SQL 进行分页的方法吗?
我知道:
- 火鸟:
FIRST
和SKIP
; - mysql:
LIMIT
; - SQL 服务器:
ROW_NUMBER()
;
有人知道执行结果分页的 SQL ANSI 方式吗?
sql - 学习 ANSI SQL 的最佳资源是什么?
我不是指“基本 SQL”,而是强烈的规范以及规范之间的差异以及出色数据库(如 SQL Server、Oracle 等)之间的实现。
sql - 没有自动增量字段的数据库上的自动增量字段
在 MS Sql Server 中很容易创建自动增量字段。在我的系统中,我停止对主键使用自动增量字段,现在我使用 Guid。太棒了,这种变化给我带来了很多好处。但在另一个非主键字段中,我确实需要实现“软自动增量”。这是因为我的系统是独立于数据库的,所以我在 c# 中以编程方式创建了 autoinc 值。
我想要关于没有自动增量的数据库上的自动增量字段的解决方案,您使用什么解决方案以及为什么?有一些关于这个的 Sql Ansi 声明?并直接从我的 c# 生成,是更好的解决方案吗?
PS:我知道select max(id)+1 from table它并不是真正的并发友好...
mysql - MYSQL LIMIT 关键字是否有 ANSI SQL 替代品?
MYSQL LIMIT 关键字是否有 ANSI SQL 替代品?
LIMIT 关键字限制 SELECT 返回的行数,例如:
返回 2 行。
在前 10 行之后返回 2 行。
sql - 所有 SQL 地理空间实现都是特定于数据库的吗?
我的团队正在研究不同数据库平台提供的地理空间功能。
是否所有实现都是数据库特定的,或者是否有 ANSI SQL 标准或类似类型的标准,正在提供或将在未来提供?
我问,因为我希望实现的代码尽可能与数据库无关(我们的项目是按照 ANSI SQL 标准编写的)。
将来是否有任何已知的将此功能标准化的计划?