Sql server mssqlmsg8152

Sql server mssqlmsg8152,sql-server,tsql,Sql Server,Tsql,我有一个where子句的值数组。我有以下内容,我得到的第3行错误消息8152 更新:我添加了varchar(50),现在它可以工作了。下面的代码现在很好。谢谢大家的参与 declare @jobName table (jobname varchar(50)) insert @jobName(jobname) values('2F4A08BF-3535-47EA-B3B8-8DDE7D46043E'), ('48720008-CC4E-4F67-A9D7-0C7F29991214'), ('91

我有一个where子句的值数组。我有以下内容,我得到的第3行错误消息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

在子句中使用

where name in ('2F4A08BF-3535-47EA-B3B8-8DDE7D46043E','48720008-CC4E-4F67-A9D7-0C7F29991214')
And name in (select jobname from @jobName)
不确定当值已存在于
@jobName
表中时,为什么需要
name='aaa'或'bbbbbb'
条件

另外,默认长度
varchar
将为
1
,因此将其更改为适当的长度

declare @jobName table (jobname varchar(500))
declare@jobName表(jobNamevarchar):此处出错


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

如下更改表声明:

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

您必须使用length定义varchar,否则它的长度将默认为1,不会保留完整字符串并将其截断为仅一个字符

使用length定义varchar,否则它的长度将默认为1,不会保留完整字符串并将其截断为仅一个字符。谢谢。我把它改成了varchar(50),它成功了。谢谢SiyualOr
。。。表(jobname sysname)
作为sysjobs.name是一个
sysname
而不是
varchar