我必须编写一条对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
谢谢,Marko
因为该条件'' = ''
仅在SQL-Server中才成立('' IS NOT NULL
与等效),并且该条件'' IS NULL
仅在Oracle中才成立,所以可以使用以下命令:
WHERE ( project > '' AND '' = '') -- for SQL-Server
OR ( project IS NOT NULL AND '' IS NULL) -- for Oracle
请注意,如果您的值仅是空格,则在SQL-Server和Oracle之间将以不同的方式对待它们。测试SQL-Fiddle-1(Oracle)和SQL-Fiddle-2(SQL-Server)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句