Sql 从列中搜索精确字符串

Sql 从列中搜索精确字符串,sql,.net,vb.net,Sql,.net,Vb.net,我在数据库中有一个名为contracts的表,这个表有一个名为shop\u id的列 商店有很多结果,可能是这样的: 132 133-134-135 3126-3127-125 126-127-128 所以我想得到shop_id=126的所有数据 所以我用的是“%” 但在这种情况下,如果我搜索shop_id=3126,它将获得信息 因为任何事物都有126,比如3126或4126,诸如此类 那么,我如何从本专栏中搜索准确的店铺id呢 因此,如果我搜索126,我想得到列中包含确切126的记录。你的问

我在数据库中有一个名为contracts的表,这个表有一个名为shop\u id的列

商店有很多结果,可能是这样的:

132

133-134-135

3126-3127-125

126-127-128

所以我想得到shop_id=126的所有数据

所以我用的是“%”

但在这种情况下,如果我搜索shop_id=3126,它将获得信息 因为任何事物都有126,比如3126或4126,诸如此类

那么,我如何从本专栏中搜索准确的店铺id呢
因此,如果我搜索126,我想得到列中包含确切126的记录。

你的问题不是很清楚,但我想你的意思是商店id包含多个id

如果我是对的,您需要以下查询:

select *
from contacts
where shop_id like '126-%' 
   or shop_id like '%-126' 
   or shop_id like '%-126-%' 
   or shop_id = '126'

请记住,这不是一个好的数据库设计。

您的问题不是很清楚,但我认为您的意思是商店id包含多个id

Select *
 From  YourTable 
 Where charindex('-126-','-'+shop_id+'-')>0
如果我是对的,您需要以下查询:

select *
from contacts
where shop_id like '126-%' 
   or shop_id like '%-126' 
   or shop_id like '%-126-%' 
   or shop_id = '126'

请记住,这不是一个好的数据库设计。

如果您希望Id前面是
126
的行不要使用LIKE
,因此我希望在shop_Id=126
的位置获取所有数据,
因此我使用LIKE%'
,您已经拥有了它,不要使用LIKE语句。真正的问题是什么……在许多层面上,选择将多个shopId用破折号分隔在同一列是错误的。它们被称为关系数据库系统是有原因的!我知道有时会有不止一条信息出现在那里-多个ShopID有点解释
126-127-128
@Codexer是的,我问是因为这样不好,所以我在这里问是因为我想要另一种方法。如果你想要Id前面是
126
的行,不要使用LIKE
,所以我想在shop_Id=126
的地方获取所有数据,
所以我使用LIKE%'
,你已经有了它,不要使用LIKE语句。真正的问题是什么……在许多层面上,选择将多个shopId用破折号分隔在同一列是错误的。它们被称为关系数据库系统是有原因的!我知道有时会有不止一条信息出现在那里-多个ShopID有点解释
126-127-128
@Codexer是的,我这样问是因为类似的不好,所以我在这里问是因为我想要另一种方式。首先,谢谢你,这是一个令人愉快的解决方案,是的,我知道这是错误的,但客户在最后一分钟强迫我,他希望在一份合同中有多家店铺,我无法为他更改hole数据库。我在这个项目上工作了5个多月,我不能从头开始重复它。@RabeeaQabaha很高兴它起了作用。我继承了更糟糕、更丑陋的结构:)。首先,谢谢你,这是一个令人愉快的解决方案,是的,我知道这是错误的,但客户在最后一分钟强迫我,他希望在一份合同中有许多商店,我无法为他更改hole数据库。我在这个项目上工作了5个多月,我不能从头开始重复它。@RabeeaQabaha很高兴它起了作用。我继承了更糟糕、更丑陋的结构:)。
Select *
 From  YourTable 
 Where charindex('-126-','-'+shop_id+'-')>0