每个人..我是新手,我正在尝试制作我的第一个“更复杂的查询”,但是没有完全发挥作用:这里是:
if NOT EXISTS (Select id,selector from Messages where MID='SYCKY')
Insert into Messages (MID,selector) Values ('SYCKY', 'SaraB|')
ELSE
if exists (
select '1'
from Messages
where charindex ('SaraB|',selector)>0
)
Update Messages
set selector = replace(selector,'SaraB|','') output inserted.selector
where MID='SYCKY'
ELSE
Update Messages
set selector = selector+'SaraB|' output inserted.selector
where MID='SYCKY'
它执行所需的操作,但在输出中我只有一个空字段
还试图添加一个额外的字段,如下所示:
if NOT EXISTS (Select id,selector from Messages where MID='SYCKY')
Insert into Messages (MID,selector) Values ('SYCKY', 'SaraB|')
ELSE
if exists (select '1' from Messages where charindex ('SaraB|',selector)>0)
Update Messages
set selector = replace(selector,'SaraB|',''), T='1' output inserted.T
where MID='SYCKY'
ELSE
Update Messages
set selector = selector+'SaraB|', T='0' output inserted.T
where MID='SYCKY'
但结果是一样的:T是空的,而我需要知道“SaraB |”已在字段中添加或删除
怎么了?
答案 0 :(得分:0)
不太确定......但也许这就是你想要的?
if NOT EXISTS (Select id,selector from Messages where MID='SYCKY')
Insert into Messages (MID,selector) Values ('SYCKY', 'SaraB|')
ELSE
if exists (
select '1'
from Messages
where charindex ('SaraB|',selector)>0
)
BEGIN
Update Messages
set selector = replace(selector,'SaraB|','') output inserted.selector
where MID='SYCKY';
SELECT 'If was true';
END
ELSE
BEGIN
Update Messages
set selector = selector+'SaraB|' output inserted.selector
where MID='SYCKY';
SELECT 'If was false';
END
这将"返回"不同的值取决于if的评估方式。