标签: ansi-sql

SQL连接:SQL ANSI标准的未来(vs加入)?

我们正在开发ETL工作,我们的顾问在连接表时一直使用"旧式"SQL

select a.attr1, b.attr1
from table1 a, table2 b
where a.attr2 = b.attr2
Run Code Online (Sandbox Code Playgroud)

而不是使用内部连接子句

select a.attr1, b.attr1
from table1 as a inner join table2 as b
   on a.attr2 = b.attr2
Run Code Online (Sandbox Code Playgroud)

我的问题是,从长远来看,是否有使用旧"加入"的风险?这种连接支持多长时间并保持为ANSI标准?我们的平台是SQL Server,我的主要原因是将来不再支持这些"where join".发生这种情况时,我们必须使用"内连接"连接方式修改所有ETL作业.

sql sql-server join ansi-sql sql-server-2008

8
推荐指数
2
解决办法
2507
查看次数

您如何编写应用程序以独立于数据库?

我的老板要求我只编写ANSI SQL以使其与数据库无关.但我了解到并不是那么容易,因为没有数据库完全兼容ANSI SQL.SQL代码很少在没有修改的情况下在数据库系统之间移植.

我看到人们以不同的方式使他们的程序数据库独立.例如:

  1. 将SQL语句外部化为资源文件.
  2. 编写许多提供者类来支持不同的数据库.
  3. 只写简单的SQL,并远离高级函数/连接.

你总是把你的代码写成"任何数据库就绪"吗?或者只在需要时才这样做?如果是的话,你是如何实现的?

database database-agnostic ansi-sql

7
推荐指数
2
解决办法
3790
查看次数

如何从命令行测试SQL的有效性?

是否有一个很好的工具可以确保SQL查询是有效的ANSI SQL,以及可选的DBMS将无法解释它?我找到了http://developer.mimer.com/validator但我想知道是否有命令行工具,最好是开源.

sql validation command-line ansi-sql

7
推荐指数
1
解决办法
4762
查看次数

Oracle DECODE的标准SQL替代方案

是否有与SQL的DECODE函数等效的ANSI SQL?

Oracle的解码函数是SQL中的IF-THEN-ELSE结构.

sql oracle ansi-sql

7
推荐指数
1
解决办法
1万
查看次数

当使用LEFT(外部)连接时,连接中表的顺序是否重要?

我想确认一下SQL查询

SELECT ....
  FROM apples,
       oranges
       LEFT JOIN kiwis ON kiwis.orange_id = oranges.id,
       bananas
 WHERE ....
Run Code Online (Sandbox Code Playgroud)

完全等同于FROM子句中的其他排列,例如

SELECT ....
  FROM oranges
       LEFT JOIN kiwis ON kiwis.orange_id = oranges.id,
       bananas,
       apples
 WHERE ....
Run Code Online (Sandbox Code Playgroud)

要么

SELECT ....
  FROM bananas,
       apples,
       oranges
       LEFT JOIN kiwis ON kiwis.orange_id = oranges.id
 WHERE ....
Run Code Online (Sandbox Code Playgroud)

只要橘子和猕猴桃之间明确的LEFT JOIN保持不变.从我在各种文档中看到的内容来看,返回的集应该完全相同.

我真的只关心查询的结果,而不是它在实际数据库中的性能.(我正在使用PostgreSQL 8.3,AFAIK不支持关于连接顺序的优化器提示,并将尝试自动创建最佳查询计划).

sql postgresql join ansi-sql

7
推荐指数
1
解决办法
2万
查看次数

SELECT*语句中的列顺序 - 保证?

我正在使用ORM(sqlalchemy)从PG数据库中获取数据.我想避免在我手工制作的SQL语句*中指定所有表列名.

到目前为止,我的假设是返回的列是用于创建db表的DDL语句的顺序.到目前为止,这是有效的 - 但我想知道这只是运气,还是在(ANSI)SQL规范中专门解决.

即ANSI SQL(因此可能是数据库)是否保证SELECT *语句中返回的列的顺序?

我使用PostgreSQL 8.4作为我的后端数据库

  • 是的,我知道在ORM中使用手工制作的SQL语句会破坏ORM的目的,但需要......

sql postgresql sqlalchemy ansi-sql

7
推荐指数
1
解决办法
2912
查看次数

Ansi SQL类型转换

是否允许像在postgres中一样在ANSI SQL中转换类型:

SELECT SUM( CAST(qnty AS int) - CAST(reserve AS int) )  AS sum
...
Run Code Online (Sandbox Code Playgroud)

qntyreserve是字符列.

sql casting ansi-sql

6
推荐指数
1
解决办法
1万
查看次数

在查询中早期(或重新排序)重用派生列 - 这是有效的ANSI SQL吗?

这是有效的ANSI SQL吗?:

SELECT 1 AS X
       ,2 * X AS Y
       ,3 * Y AS Z
Run Code Online (Sandbox Code Playgroud)

因为Teradata(12)可以做到这一点,以及这个(是的,疯了不是它):

SELECT 3 * Y AS Z
       ,2 * X AS Y
       ,1 AS X
Run Code Online (Sandbox Code Playgroud)

但是SQL Server 2005需要这样的东西:

SELECT  X
       ,Y
       ,3 * Y AS Z
FROM    (
         SELECT X
               ,2 * X AS Y
         FROM   (
                 SELECT 1 AS X
                ) AS X
        ) AS Y
Run Code Online (Sandbox Code Playgroud)

sql sql-server teradata ansi-sql

6
推荐指数
1
解决办法
369
查看次数

Netezza从一个表更新到另一个表

这是我的查询在Netezza中不起作用:

UPDATE TABLE1 A
SET A.COL1= (SELECT DISTINCT B.COL1 FROM TABLE2 B WHERE B.ID= A.ID AND B.DeptID=104)
WHERE A.DeptID=3
Run Code Online (Sandbox Code Playgroud)

如何重新编写此查询?请帮忙.

sql ansi-sql netezza

6
推荐指数
1
解决办法
2万
查看次数

Coalesce 是 ANSI SQL 的函数吗

COALESCE 是 ANSI SQL especification 的函数吗?是否受主要关系数据库支持?

sql ansi-sql

6
推荐指数
1
解决办法
2206
查看次数