MS Sql Msg 8152

时间:2017-01-06 16:25:32

标签: sql-server tsql

我有一个where子句的值数组。我有以下内容,我收到第3行错误的msg 8152。

更新:我添加了varchar(50),现在它正在运行。以下代码现在很好。谢谢大家的参与。

declare @jobName table (jobname varchar(50))
insert @jobName(jobname) 
values('2F4A08BF-3535-47EA-B3B8-8DDE7D46043E'),
('48720008-CC4E-4F67-A9D7-0C7F29991214'),
('919C8713-9ED0-4ECC-8880-7335C420E7DB'),
('9A38C056-9DC4-44EF-895B-9325690F7300'),
('A849630B-D898-4444-80BD-B0CBADAEA6DD'),
('BF867B49-8BB1-49C0-B67D-6DEE77EB0421'),
('BFB35F27-FCC5-40A9-B57B-E1EFB06BDB6A'),
('D6E2EA84-939A-401C-8B36-BE5BDFBE1F91'),
('F5A6DE42-91B5-408C-A707-BD412A695683');


SELECT TOP 1000 *
  FROM [msdb].[dbo].[sysjobs]
  --where name like '2F4A08BF-3535-47EA-B3B8-8DDE7D46043E' or '48720008-CC4E-4F67-A9D7-0C7F29991214'
  where name in (select jobname from @jobName)
  order by job_id asc

3 个答案:

答案 0 :(得分:0)

使用IN子句

where name in ('2F4A08BF-3535-47EA-B3B8-8DDE7D46043E','48720008-CC4E-4F67-A9D7-0C7F29991214')
And name in (select jobname from @jobName)

name = 'aaa' OR 'bbbb'

中已存在值时,不确定为什么要@jobName条件

默认长度varchar也是1,因此请将其更改为正确的长度

declare @jobName table (jobname varchar(500))

答案 1 :(得分:0)

声明@jobName表(作业名 varchar ):这里出错。

类型错误,请使用varchar(80)而不是varchar。

答案 2 :(得分:0)

像这样更改你的表声明:

declare @jobName table (jobname varchar(100))  -- 100 or something

你必须定义varchar的长度,否则它的长度将是默认值1,它不会保留完整的字符串并将其截断为只有一个字符