我有一个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
答案 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,它不会保留完整的字符串并将其截断为只有一个字符