ift*_*ull 2 sql sql-server sql-server-2008
我有一个供应商数据库,用于具有100个"用户定义字符串"列的Web应用程序.它们的数据类型为varchar,长度为255.
我需要返回所有非空行,以便我可以找出每个行中存储的内容.多年来输入已无法控制,因此userdefinedstring1可以包含多行中的文本,日期,数字,空字符串或NULL.
我最初的解决方案就是
SELECT
*
FROM userdefinedstring table
WHERE userdefinedstring1 IS NOT NULL
OR userdefinedstring2 IS NOT NULL
Run Code Online (Sandbox Code Playgroud)
再重复98次.
可能有更好的方法来做到这一点,但我还没有确定它,所以任何提示你都会受到赞赏.
我能想到的唯一改进就是COALESCE在WHERE条款中使用而不是OR:
SELECT *
FROM userdefinedstringTable
WHERE COALSECE( userdefinedstring1
, userdefinedstring2
...
) IS NOT NULL
Run Code Online (Sandbox Code Playgroud)
根据您的DBMS产品,可能有特定于供应商的改进方法,但一般来说,这可能是最好的.