2014-03-26 18 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