供应商数据库包含具有100个用户定义的字符串列的表,需要查找该表中非空的所有实例

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次.

可能有更好的方法来做到这一点,但我还没有确定它,所以任何提示你都会受到赞赏.

RBa*_*ung 5

我能想到的唯一改进就是COALESCEWHERE条款中使用而不是OR:

SELECT *
FROM   userdefinedstringTable
WHERE  COALSECE( userdefinedstring1
               , userdefinedstring2
                ...
               ) IS NOT NULL
Run Code Online (Sandbox Code Playgroud)

根据您的DBMS产品,可能有特定于供应商的改进方法,但一般来说,这可能是最好的.