我有一个像
这样的选择语句 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,则只显示逗号。
我想删除逗号。我该怎么做?
答案 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