在SQL SELECT语句中:有条件地从字段中删除逗号运算符

时间:2011-12-14 09:11:39

标签: sql-server sql-server-2008

我有一个像

这样的选择语句

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,则只显示逗号。

我想删除逗号。我该怎么做?

5 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

你应该使用运算符CASE和函数ISNULL。

答案 2 :(得分: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

答案 3 :(得分:0)

您可以在SQL Server中使用案例功能:

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

答案 4 :(得分:0)

小心使用[+]运算符的NULL值: 除非您将数据库参数 CONCAT_NULL_YIELDS_NULL 设置为OFF,

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

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