concat SQL查询中的if语句

时间:2018-08-11 16:30:24

标签: sql sql-server

我有以下SQL语句:

SELECT CONCAT(ISNULL(CONCAT(full_name,' ' ,'( ',(aff_bus) ),'('),' ) ') AS shnames,contactrecord_id 
FROM contactrecord
ORDER BY shnames ASC

enter image description here

我在括号中显示aff_bus列,但是如果aff_bus列为空白,我不希望使用括号。如果aff_bus列为空白,如何删除括号?

3 个答案:

答案 0 :(得分:4)

使用CASE检查aff_bus是否为空

SELECT 
  CASE WHEN aff_bus IS NULL THEN full_name
       WHEN aff_bus = '' THEN full_name
       ELSE CONCAT(full_name, '(', aff_bus, ')') 
       END as shshames,
  contactrecord_id
FROM contactrecord
ORDER BY shnames ASC

答案 1 :(得分:4)

利用以下事实:将NULL与“添加”返回NULL

SELECT ISNULL(full_name, '') + ISNULL(' ( ' + aff_bus + ' )', '') AS shnames, contactrecord_id 
FROM contactrecord
ORDER BY shnames ASC

答案 2 :(得分:0)

  1. 用例语句检查列为空还是空白。

    SELECT (CASE WHEN AFF_BUS IS NOT NULL AND AFF_BUS != '' 
             THEN  CONCAT(FULL_NAME,' ( ',aff_bus, ' ) ')
             ELSE  CONCAT (FULL_NAME,'')
         END) AS shnames, CONTACTRECORD_ID FROM CONTACTRECORD ORDER BY shnames ASC ;