Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.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 server SQL Server Insert使用case语句不返回行_Sql Server_Tsql - Fatal编程技术网

Sql server SQL Server Insert使用case语句不返回行

Sql server SQL Server Insert使用case语句不返回行,sql-server,tsql,Sql Server,Tsql,我想知道是否可以使用相当复杂的case逻辑编写insert,但如果case谓词都不为true,则不插入行,这也意味着我不想插入null。select案例不会从表中检索数据 e、 g 不幸的是,我无法修改检查计数的语句,即,将where ERRORMMESSAGE设置为NOTNULL 有没有办法做到这一点,或者我应该将大小写分隔为多个if语句?t-SQL中不存在case表达式case Switch语句返回标量值,它无法控制SELECT返回的其他行数,如果要控制行是否返回,需要在以下位置执行: CA

我想知道是否可以使用相当复杂的case逻辑编写insert,但如果case谓词都不为true,则不插入行,这也意味着我不想插入null。select案例不会从表中检索数据

e、 g

不幸的是,我无法修改检查计数的语句,即,将where ERRORMMESSAGE设置为NOTNULL

有没有办法做到这一点,或者我应该将大小写分隔为多个if语句?

t-SQL中不存在case表达式case Switch语句返回标量值,它无法控制SELECT返回的其他行数,如果要控制行是否返回,需要在以下位置执行:

CASE表达式CASE Switch语句在t-SQL中不存在,返回标量值,它无法控制SELECT返回的行数,如果要控制行是否返回,则需要在其中执行此操作:


案例表达案例表达提及行为的文档可在此处找到:提及行为的文档可在此处找到:
DECLARE @tabErrors TABLE (errorMessage NVARCHAR(100))
DECLARE @intType INT
DECLARE @intVal INT

INSERT @tabErrors
SELECT CASE 
   WHEN @intType = 1 AND @intVal > 100
      THEN 'Some Error'
   WHEN @intType = 2 AND @intVal > 200
      THEN 'Some Other Error'
   ELSE <NO ROWS> END

IF SELECT COUNT(*) FROM @tabErrors = 0
   -- Continue with processing
SELECT CASE WHEN @intType = 1 AND @intVal > 100 THEN 'Some Error'
            WHEN @intType = 2 AND @intVal > 200 THEN 'Some Other Error'
       END AS YourAlias
WHERE (@intType = 1 AND @intVal > 100)
   OR (@intType = 2 AND @intVal > 200);