【问题标题】:search for exact string from column从列中搜索确切的字符串
【发布时间】:2018-06-10 05:32:38
【问题描述】:

我在数据库中有一个名为 contracts 的表,该表有一个名为 shop_id 的列

shop_id 有很多结果,可以是这样的:

132

133-134-135

3126-3127-125

126-127-128

所以我想获取 shop_id = 126 的所有数据

所以我使用 Like %''

但在这种情况下,如果我搜索 shop_id=3126 它会得到信息 对于任何有 126 的东西,比如 3126 或 4126 等等。

那么我如何从该列中搜索确切的商店 ID 因此,如果我搜索 126,我想获取列包含精确 126 的记录。

【问题讨论】:

  • 如果你想要 Id 正好是 126 的行不要使用 LIKE
  • so i want to get all data where shop_id = 126,so I'm using Like %'',你已经有了,不要用like语句。真正的问题是什么......
  • 将多个 shopId 保留在同一列中并用破折号分隔的选择在许多层面上都是错误的。出于某种原因,它们被称为关系数据库系统。
  • 啊!我知道有时会出现不止一条信息 - 多个 ShopId 可以解释为 126-127-128
  • @Codexer 是的,我问是因为喜欢不好,所以我在这里问是因为我想要另一种方式。

标签: sql .net vb.net


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:
    Select *
     From  YourTable 
     Where charindex('-126-','-'+shop_id+'-')>0
    

    【讨论】:

    • 首先感谢您这是一个令人愉快的解决方案,是的,我知道那是错误的,但是客户在最后一分钟强迫我说他想要在一份合同中拥有许多商店,我无法更改孔数据库为他。我在这个项目上工作了 5 个多月,我不能从头开始重复。
    • @RabeeaQabaha 很高兴它有帮助。我继承了更糟糕、更丑陋的结构:)。
    猜你喜欢
    • 2020-02-01
    • 2017-01-28
    • 1970-01-01
    • 2023-03-13
    • 2020-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    相关资源
    最近更新 更多