Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL-If-Else更新脚本语句_Sql_Sql Server_Sql Server 2008_Tsql - Fatal编程技术网

SQL-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-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 
       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中?我有点惊讶,但后来我在这里读到: