我想从表 T1 创建一个包含两个字段的视图,一个是ID,另一个可以从字段名称或 Name_aux中获取其值即可。逻辑是从Name_2获取值,除非它是 NULL ,为空('' )或空格。我不能对表格进行任何改动。
T1有这样的结构:
|ID|Name |Name_2|
|1 |T001 | |
|2 |T001T|T001X |
|3 |T002 | |
我使用了IIF
函数但是虽然我可以在脚本中使用它,但我无法在查询中使用它:
SELECT ID, IIF( (([Name_2] = '') OR ([Name_2] = ' ') OR ([Name_2] IS NULL)),
[Name], [Name_2] ) AS NAME
FROM dbo.T1
我已在此thread中读到,在视图中不可能使用复杂的IF逻辑,但由于它来自几年前,我想再问一次。
如果没有其他解决方案,我可以做一个用户定义的函数,它接收两个字符串并返回一个,但我想避免这种情况。
谢谢
答案 0 :(得分:1)
使用Case
作为下一个演示: -
declare @MyTable table (id int identity, name varchar(10), name_2 varchar(10))
insert into @MyTable values ('T001',NULL),('T001T','T001X'),('T002',' ')
select id, case
when name_2 is null or name_2 = '' or name_2 = ' '
then name
else name_2
end The_name
from @MyTable
<强>结果: - 强>
1 T001
2 T001X
3 T002
答案 1 :(得分:0)
没有明显的理由说明你不能在视图中做到这一点 - 或者是一个功能。我们的一些观点非常多,有许多这样的条件语句等。唯一的要求是派生列必须给出一个别名。