Mar*_*rko 5 sql sql-server oracle
我必须编写一个对MS SQL Server和Oracle有效的SQL SELECT语句.我必须使用旧的客户数据库,所以我无法改变数据库设计中的任何内容......
问题是该表有一个可为空的列'project',它是一个varchar,在某些情况下填充了一个空字符串 - 由oracle转换为NULL.那么如何选择所有具有NON空"项目"的列?
WHERE project IS NOT NULL works for oracle
WHERE project <> '' works for MS
WHERE project IS NOT NULL AND project <> '' works for MS, but not for Oracle
Run Code Online (Sandbox Code Playgroud)
谢谢,Marko
因为条件'' = ''仅在SQL-Server中是正确的(它相当于'' IS NOT NULL)并且条件'' IS NULL仅在Oracle中为true,所以您可以使用:
WHERE ( project > '' AND '' = '') -- for SQL-Server
OR ( project IS NOT NULL AND '' IS NULL) -- for Oracle
Run Code Online (Sandbox Code Playgroud)
请注意,如果您的值仅为空格,则SQL-Server和Oracle之间的处理方式不同.测试SQL-Fiddle-1(Oracle)和SQL-Fiddle-2(SQL-Server).
| 归档时间: |
|
| 查看次数: |
1297 次 |
| 最近记录: |