use*_*755 5 sql t-sql sql-server
我一直在努力使用下面的脚本,我无法找到更好的方法来做到这一点.
有谁看到这个问题?我正确地声明了变量.为什么失败了?谢谢你的帮助!
DECLARE @var1 as VarChar(50)
DECLARE @var2 as VarChar(50)
SET @Var1 = '1, 2, 3, 4, 5'
EXEC('IF (select count(*) from Table1 where Column1 in (' + @Var1 + ')) = 5
SET @Var2 = ''True''
ELSE
SET @Var2 = ''False''')
SELECT @Var2
Run Code Online (Sandbox Code Playgroud)
错误信息:
必须声明SCALAR VARIABLE @ Var2
sp_executesql如果要从参数中获取值,则需要使用.
要缩短查询,请使用CASE.
DECLARE @var1 as VarChar(50)
DECLARE @var2 as VarChar(50)
SET @Var1 = '1, 2, 3, 4, 5'
SET @sqlCommand = 'SELECT @Var = CASE WHEN count(*) = 5 THEN ''TRUE'' ELSE ''FALSE'' END FROM Table1 where Column1 IN (' + @Var1 + ')'
EXECUTE sp_executesql @sqlCommand, N'@Var VARCHAR(5) OUTPUT', @Var=@var2 OUTPUT
SELECT @Var2
Run Code Online (Sandbox Code Playgroud)
如果你想知道所有ID从@Var1出现在桌子上,你还需要使用DISTINCT
SET @sqlCommand = 'SELECT @Var = CASE WHEN count(DISTINCT Column1) = 5 THEN ''TRUE'' ELSE ''FALSE'' END FROM Table1 where Column1 IN (' + @Var1 + ')'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14135 次 |
| 最近记录: |