2014-07-11 54 views
-1

我需要在sql表中插入字符串,我必須添加條件。例如:Sql的 - 如何添加條件時將其插入到表中的字段?

SELECT ii.Terminating_Item_Site_ID, 
    ii.Originating_Item_Site_ID, 
    loc.ServiceAddress, 
    loc.ServiceCity, 
    loc.ServiceState, 
    (ii.Originating_Item_Site_ID + ' - ' + loc.ServiceAddress + ', ' + loc.ServiceCity + ', ' + loc.ServiceState) AS OrigSite 
FROM tblItemInventory ii 
LEFT OUTER JOIN tblServiceLocation AS loc ON loc1.ServiceLocationID = ii.Originating_Item_Site_ID 

我需要把狀態插入場OrigSite的時候,所以如果ii.Originating_Item_Site_IDloc.ServiceAddressloc.ServiceCityloc.ServiceStatenull,我並不需要包括它,所以我將其替換爲「」。

發生什麼事情是,如果上述任何一個字段是null,OrigSite也變成null

我試過使用WHEN但我無法管理它。 我正在使用SQL Server 2008 R2。

任何人都可以幫忙嗎?

回答

0
SELECT ii.Terminating_Item_Site_ID, 
    coalesce(ii.Originating_Item_Site_ID,''), 
    coalesce(loc.ServiceAddress,''), 
    coalesce(loc.ServiceCity,''), 
    coalesce(loc.ServiceState,''), 
    (coalesce(ii.Originating_Item_Site_ID,'') + ' - ' + coalesce(loc.ServiceAddress,'') + ', ' + coalesce(loc.ServiceCity,'') + ', ' + coalesce(loc.ServiceState,'')) AS OrigSite 
FROM tblItemInventory ii 
LEFT OUTER JOIN tblServiceLocation AS loc ON loc1.ServiceLocationID = ii.Originating_Item_Site_ID 

ISNULL是一個系統的功能,與一predifined值替換空值。 Colasce是另一個像ISNULL但Coalesce是標準的SQL的一部分。 ISNULL是特定於T-SQL的。 更標準更便攜。

SELECT ii.Terminating_Item_Site_ID, 
    isnull(ii.Originating_Item_Site_ID,''), 
    isnull(loc.ServiceAddress,''), 
    isnull(loc.ServiceCity,''), 
    isnull(loc.ServiceState,''), 
    (isnull((ii.Originating_Item_Site_ID + ' - ' + isnull(loc.ServiceAddress,'') + ', ' + isnull(loc.ServiceCity,'') + ', ' + isnull(loc.ServiceState,'')) AS OrigSite 
FROM tblItemInventory ii 
LEFT OUTER JOIN tblServiceLocation AS loc ON loc1.ServiceLocationID = ii.Originating_Item_Site_ID 
+0

這並不工作,使用isnull必須在連接字符串的每個部分使用,不互相列 – Tristan

+0

在級聯如果一個部分是空整個concatination成爲整個級聯null.so ISNULL作品。 –

+0

是的,你可以替換連接結果中的空值,但是你仍然失去其餘的子串。如果你沒有子串,你就不會丟失任何存在的數據。另外,coalecse返回提供的字段中的第一個不爲空,所以在你的例子中你得到了ii.Originating_Item_Site_ID或' - ' – Tristan

1

當您連接字符串並且字符串1爲空時,連接結果也爲空。你可以在每個部分使用isnull('string','')來避免這種行爲。下面是代碼例如:

SELECT ii.Terminating_Item_Site_ID, 
    ii.Originating_Item_Site_ID, 
    loc.ServiceAddress, 
    loc.ServiceCity, 
    loc.ServiceState, 
    (ISNULL(ii.Originating_Item_Site_ID,'') 
     + ' - ' + ISNULL(loc.ServiceAddress,'') 
     + ', ' + ISNULL(loc.ServiceCity,'') 
     + ', ' + ISNULL(loc.ServiceState,'')) AS OrigSite 
FROM tblItemInventory ii 
LEFT OUTER JOIN tblServiceLocation AS loc ON loc1.ServiceLocationID = ii.Originating_Item 
相關問題