TSQL反向LIKE语句

时间:2016-04-28 13:36:04

标签: tsql

这里给你的上下文是我的数据库架构。

水果表

Id     Name
1      Gala Apples
2      Navel Oranges
3      Peach
4      Mandarin Oranges
5      Kiwi
6      Fuji Apples

相交表:

FruitId     CrossRefFruitId
   1              6
   2              4

所以我的交叉表有水果值。

1 (Gala Apples) are related to 6 (Fuji Apples)
2 (Navel Oranges) are related to 4 (Mandarin Oranges)

在UI中,用户正在查看有关Gala Apples的详细信息。我希望能够有一个“另见:富士苹果”。

现在我被告知我不希望有反向条目,所以1,6很好但是6,1这是浪费,这是有道理的。

所以我正在尝试编写一个TSQL检查,以确定是否存在1,6或6,1。

最终这将进入INSERT触发器,该触发器将检查传入的行以查看组合是否存在然后允许插入或跳过。

谷歌搜索我发现REVERSE用于反转字符串并最终获得大量的点击以进行EXCEPT和INTERSECT。

所以,即使只是知道google的正确术语,我也可以接受自我教育。

1 个答案:

答案 0 :(得分:1)

create table #test
(
id1 int,
id2 int
)

insert into #test
select 1,6
union all
select 2,5
union all
select 6,1
union all
select 5,3
union all
select 5,2


select * from #test  t1
where exists(
select  1 from #test t2 where t1.id1=t2.id2 and t1.id2=t2.id1)

根据问题进行更新:

您的触发器应包含下面的代码行,用于检查是否存在反转的行。

if   exists(
select 1 from
#test t1
join
inserted i
on i.id1=t1.id2 and i.id2=t1.id1
)
begin 
rollback tran
--some message---
end