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