2011-12-14 46 views
1

刪除逗號操作我有一個像在SQL SELECT語句:有條件地從外地

select語句

SELECT 'Name' = customer_fname+ ', ' + customer_lname FROM customers

它的輸出是這樣的:現在

peter, willson 
jenny, Mark 

,如果customer_fname爲null,則輸出將是:

, willson 
    , Mark 

如果customer_lname爲null,則:

peter, 
    jenny, 

而且,如果customer_fname和customer_lname都爲null,那麼只會顯示逗號。

我想刪除逗號。我該怎麼做呢?

回答

2

通常我會建議使用ISNULL運算符。然而,因爲你需要檢查兩個領域,邏輯變得有點討厭。因此,我建議使用CASE聲明。

SELECT CASE 
    WHEN first_name IS NULL AND last_name IS NULL THEN '' 
    WHEN first_name IS NULL AND last_name IS NOT NULL THEN last_name 
    WHEN first_name IS NOT NULL AND last_name IS NULL THEN first_name 
    ELSE last_name + ', ' + first_name 
END 
FROM customers 

編輯對於dknaack - 一個ISNULL解決方案:)

SELECT ISNULL(last_name + ', ' + first_name, 
      ISNULL(last_name, 
       ISNULL(first_name, ''))) 
FROM Customers 
+0

謝謝。問題通過使用CASE語句解決 – 2011-12-14 09:34:07

0

您應該使用運營商CASE和功能ISNULL。

0

請使用以下查詢:感謝

SELECT 'Name' = 
     (CASE WHEN customer_fname IS NULL OR customer_lname IS NULL THEN (customer_fname + ' ' + customer_lname) 
      ELSE customer_fname+ ', ' + customer_lname END) 
     FROM customers 
0

您可以在SQL Server中使用的情況下功能:

SELECT 'Name' = customer_fname+ case when customer_fname is not null then ',' + customer_lname FROM customers 
0

小心用[+]運算符NULL值: 除非你設置數據庫參數CONCAT_NULL_YIELDS_NULL轉爲OFF,

NULL +'任何非空字符串'返回NULL,不爲空字符串

SELECT ISNULL(customer_fname,'')+ ISNULL(', '+ customer_lname,'') [Name] 
FROM customers