SQL View从两个字段中选择数据并合并为一个

时间:2012-06-26 11:40:55

标签: sql

我有一个表有两个字段--ID1和ID2
ID1可以为空白,ID2始终填充。

我想创建一个包含一个字段的视图。这个字段是来自ID2的数据,除非ID1有一个值,在这种情况下我需要它是ID1。

Coalesce对我不起作用,因为ID1不为空。

所有建议都很受欢迎!

4 个答案:

答案 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 ...