2014-03-26 61 views
-2

喜的coulmn空我有3列如何检查在SQL

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

我已经写了两个查询返回从与TNS PARAMS列值PARAMS和XML colums 电话号码表= 67678787是在节点CellPhoneNumber XML cplumn值的电话号码 是推迟实施数

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列没有电话号码意味着其他查询应该执行。

你能帮助我使用条件语句吗?

+0

使用ISNULL()操作 –

回答

0

您可以创建一个视图并使用CASE ... WHEN语句表示该字段。类似这样的:

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

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

+0

其实可以你把上面的查询的地方 – user3446558

+0

因为如果帕拉姆没有价值应该检查XML列 – user3446558

+0

谢谢合作... – user3446558

0

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

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

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

应检查参数查询返回,如果它的null然后执行第二条语句,从xml列中获取值 – user3446558