SQL-If-Else更新脚本语句
我正在尝试创建If-Else更新脚本。这是我到目前为止总结的内容:SQL-If-Else更新脚本语句,sql,sql-server,sql-server-2008,tsql,Sql,Sql Server,Sql Server 2008,Tsql,我正在尝试创建If-Else更新脚本。这是我到目前为止总结的内容: IF (SELECT [FileType1] FROM Document WHERE ([FileType1] LIKE 'E-mail' OR [FileType1] LIKE 'outlook')) UPDATE Document SET [FilePath] = [Full Path] ELSE ((SELECT [FileType1] FROM Document
IF (SELECT [FileType1]
FROM Document
WHERE ([FileType1] LIKE 'E-mail' OR [FileType1] LIKE 'outlook'))
UPDATE Document
SET [FilePath] = [Full Path]
ELSE ((SELECT [FileType1]
FROM Document
WHERE ([FileType1] NOT LIKE 'E-mail' OR [FileType1] NOT LIKE 'outlook'))
UPDATE Document
SET [Path] = [Full Path]
我做错了什么?基本上,如果在一条语句中找到电子邮件或outlook,我希望filepath列等于完整路径列
如果找到非电子邮件,我希望路径列等于完整路径列。您可以使用
CASE
语句执行此操作,同时将ELSE
条件默认为自身:
Update Document
Set FilePath = Case When FileType1 In ('E-mail', 'Outlook')
Then [Full Path]
Else FilePath
End,
[Path] = Case When FileType1 Not In ('E-mail', 'Outlook')
Then [Full Path]
Else [Path]
End
我还删除了
LIKE
语句(因为您只是为了平等而使用它们),并删除了或语句,而不是中的和非中的语句,您可以使用CASE
语句执行此操作,同时将ELSE
条件默认为自身:
Update Document
Set FilePath = Case When FileType1 In ('E-mail', 'Outlook')
Then [Full Path]
Else FilePath
End,
[Path] = Case When FileType1 Not In ('E-mail', 'Outlook')
Then [Full Path]
Else [Path]
End
我还删除了类似的语句(因为你只是为了平等才使用它们),删除了或语句,而不是中的,而不是,,或者,你可以简化和缩短Siyual的建议,只使用[iif]
,这是相对较新的,即,与SQL Server 2012一起引入
update d
set FilePath = iif(FileType1 in ('E-Mail', 'Outlook'), FullPath, FilePath),
Path = iif(FileType1 not in ('E-Mail', 'Outlook'), FullPath, Path)
from Document d;
希望对您有所帮助。或者,您可以简化并缩短Siyual的建议,只使用相对较新的[iif]
,即SQL Server 2012中引入的
update d
set FilePath = iif(FileType1 in ('E-Mail', 'Outlook'), FullPath, FilePath),
Path = iif(FileType1 not in ('E-Mail', 'Outlook'), FullPath, Path)
from Document d;
希望能对您有所帮助。可能重复的不确定您为什么需要如果其他在这里;是什么阻止您在UPDATE
上写入条件不确定您为什么需要IF ELSE
的可能重复项;是什么阻止您在SQL中编写关于UPDATE
IIF的条件?我有点惊讶,但后来我在这里读到:IIF在SQL中?我有点惊讶,但后来我在这里读到: