当null时,消除连接值中的空格

时间:2015-03-30 15:44:05

标签: sql sql-server

我的SELECT语句如下所示:

SELECT JKLL.LKJJ, LKJF.ASLKD, TRIM (ADDR.UNNBR) || ' ' || TRIM(ADDR.PREDIR) || ' ' ||, TRIM(ADDR.STREET) ...

其中UNNBR是地址编号,PREDIR是预定向(NSEW)。

当连接到同一列时,如果predir为null,显然我在UNNBR和STREET之间得到两个空格。

当PREDIR为空时,我可以使用case语句来消除此空间吗?如果是这样,那语法会是什么样的?

3 个答案:

答案 0 :(得分:0)

我有时会针对这些情况做这样的事情:

(TSQL语法)

SELECT
CASE WHEN ADDR.UNNBRIS IS NOT NULL THEN ADDR.UNNBR + ' ' ELSE '' END +
CASE WHEN ADDR.PREDIR IS NOT NULL THEN ADDR.PREDIR + ' ' ELSE '' END + 
...

这样,只有在字段不为空时才能获得空格。

答案 1 :(得分:0)

我会使用ISNULL

SELECT JKLL.LKJJ, LKJF.ASLKD, TRIM(ADDR.UNNBR) + ISNULL(' ' + TRIM(ADDR.PREDIR),'') ...

答案 2 :(得分:0)

连接到任何内容的NULL值会产生NULL。所以这样的事情会起作用:

WITH ex as
    (SELECT 'Pants' as item, null as other, 'George' as name)
SELECT COALESCE(item + ' ', '')  
    + COALESCE(other + ' ', '')  
    + COALESCE(name + ' ', '')  
FROM ex