如何在sql中检查列null

时间:2014-03-26 20:43:54

标签: sql sql-server sql-server-2008

嗨,我有一个包含3列的表

id,  params                  ,  xml 
1,   $pmn=67676$tns=67678787$=pro ,<ConsentDTO><OrderId>76676</OrderId><ReceiverInformation>              <ReceiverType>SMS</ReceiverType><CellPhoneNumber>78787</CellPhoneNumber></ReceiverInformation></ConsentDTO>

我写了两个查询来从params和Xml colums返回电话号码 在参数列值中,tns = 67678787是电话号码 在节点CellPhoneNumber中的XML cplumn值是pone数

PARAMS

select SUBSTRING(params,  
   CHARINDEX('$tnr=',params) + 5,   
   CHARINDEX('$pro',params) - CHARINDEX('$tnr=',params)-5) from table1

XML

select table1.xml.value('(/ConsentDTO/ReceiverInformation/CellPhoneNumber/text())[1]','varchar(50)') from table1)

现在我的问题是,如果params列没有电话号码意味着其他查询应该执行。

你可以帮我使用条件陈述吗?

2 个答案:

答案 0 :(得分:0)

您可以创建视图并使用该字段的CASE ... WHEN语句。像这样:

SELECT (CASE WHEN params IS NULL THEN '' ELSE params END) as params FROM Table1

然后使用此视图进行转换。希望这有帮助。

答案 1 :(得分:0)

在查询的WHERE子句中使用XML列上的exist()。这会将结果限制为包含所需内容的XML内容的记录。

请参阅:http://technet.microsoft.com/en-us/library/ms189869.aspx

SELECT *
FROM table1
WHERE xmlColumn.exist('/Path/to/data') = 1;