Sql server mssqlmsg8152
我有一个where子句的值数组。我有以下内容,我得到的第3行错误消息8152 更新:我添加了varchar(50),现在它可以工作了。下面的代码现在很好。谢谢大家的参与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
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
。