我的SELECT语句如下所示:
SELECT JKLL.LKJJ, LKJF.ASLKD, TRIM (ADDR.UNNBR) || ' ' || TRIM(ADDR.PREDIR) || ' ' ||, TRIM(ADDR.STREET)
...
其中UNNBR是地址编号,PREDIR是预定向(NSEW)。
当连接到同一列时,如果predir为null,显然我在UNNBR和STREET之间得到两个空格。
当PREDIR为空时,我可以使用case语句来消除此空间吗?如果是这样,那语法会是什么样的?
答案 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