Sql server 在SQL SELECT语句中:有条件地从字段中删除逗号运算符
我有一个select语句,如Sql server 在SQL SELECT语句中:有条件地从字段中删除逗号运算符,sql-server,sql-server-2008,Sql Server,Sql Server 2008,我有一个select语句,如 选择“名称”=客户名称+,“+客户名称” 来自客户 其输出如下: peter, willson jenny, Mark 现在,如果customer_fname为空,则输出将为: , willson , Mark 如果客户名称为空,则: peter, jenny, 如果customer_fname和customer_lname都为空,则只显示逗号 我想删除逗号。怎么做?通常我建议使用操作符。然而,由于您需要检查这两个字段,逻辑变得有点糟糕。因
选择“名称”=客户名称+,“+客户名称”
来自客户
其输出如下:
peter, willson
jenny, Mark
现在,如果customer_fname为空,则输出将为:
, willson
, Mark
如果客户名称为空,则:
peter,
jenny,
如果customer_fname和customer_lname都为空,则只显示逗号
我想删除逗号。怎么做?通常我建议使用操作符。然而,由于您需要检查这两个字段,逻辑变得有点糟糕。因此,我建议使用声明
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解决方案:)
您应该使用运算符CASE和函数ISNULL。请使用下面的查询:谢谢
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
您可以在SQL Server中使用case函数:
SELECT 'Name' = customer_fname+ case when customer_fname is not null then ',' + customer_lname FROM customers
请小心使用[+]运算符处理空值: 除非您将数据库参数CONCAT\u NULL\u products\u NULL设置为OFF NULL+“任何非NULL字符串”返回NULL,而不是空字符串
SELECT ISNULL(customer_fname,'')+ ISNULL(', '+ customer_lname,'') [Name]
FROM customers
@dknaack请参见ISNULL解决方案的编辑。它的可读性不如SELECT,所以我不推荐它,但它可以工作。。。!
SELECT ISNULL(customer_fname,'')+ ISNULL(', '+ customer_lname,'') [Name]
FROM customers