我有一个表有两个字段--ID1和ID2
ID1可以为空白,ID2始终填充。
我想创建一个包含一个字段的视图。这个字段是来自ID2的数据,除非ID1有一个值,在这种情况下我需要它是ID1。
Coalesce对我不起作用,因为ID1不为空。
所有建议都很受欢迎!
答案 0 :(得分:2)
取决于'blank'在此上下文中的确切含义,但如果空白仅表示空字符串或空格:
如果该列可能包含您希望仍然视为空白的空格,则从ID1中删除空格:
LTRIM(ID1)
然后,如果它等于空字符串,则可以将其设为NULL
:
NULLIF(TRIM(ID1), '')
然后您可以使用ID2列COALESCE()
,如下所示:
COALESCE(NULLIF(TRIM(ID1), ''), ID2)
如果ID1总是'某事'或''(空字符串),那么你只需要NULLIF(ID1,'')
如果ID1 =空字符串将返回NULL
原始回复,因为它修剪了两次而愚蠢!
'[ID] = COALESCE(NULLIF(LTRIM(RTRIM(ID1)),''),ID2)'
答案 1 :(得分:1)
无论“空白”是什么意思,如果它不是NULL
,都可以用CASE
条件表示:
CASE WHEN ID1 = 'blank' THEN ID2 ELSE ID1 END
ID1 = 'blank'
就是你的条件。
答案 2 :(得分:1)
select case when ID1 = '' then ID2 else ID1 end from MyTable;
答案 3 :(得分:0)
您可以尝试CASE
声明:
SELECT CASE ID1 = '' THEN ID2 ELSE ID1 END CASE FROM ...