【问题标题】:How to write an SQL query to get rows with the same prefix如何编写 SQL 查询以获取具有相同前缀的行
【发布时间】:2012-09-18 20:07:06
【问题描述】:

每个人;

我正在研究存储路径信息的数据库,下面显示了一个简化表

path_id | path value
1         //a/b/c/d
2         //a/b/e
3         //a/b
4         //a/bcd

所以问题来了,我怎样才能获得以“//a/b”为前缀的信息?在这种情况下,结果应该是:

path_id | path value
1         //a/b/c/d
2         //a/b/e
3         //a/b

我正在寻求更优雅和优化的查询,而不是使用像“OR”这样的逻辑运算符。 谢谢。

【问题讨论】:

    标签: sql query-optimization prefix


    【解决方案1】:
    SELECT * FROM YourTable WHERE path_value like '//a/b/%' OR path_value = '//a/b' 
    

    注意WHERE 语句第一部分中通配符前的额外斜杠。这将排除 //a/bcd

    【讨论】:

      【解决方案2】:

      % 充当通配符,因此任何内容都可以跟随该部分。

      SELECT * FROM tableName WHERE path_value like '//a/b/%' OR path_value = '//a/b'
      

      【讨论】:

      • 那仍然会选择 path_id 4
      • 对,我看的不够近。我没有意识到他不想要 4。我会编辑它。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-07
      • 1970-01-01
      • 2016-05-21
      • 2021-12-27
      • 2022-12-16
      • 2021-12-14
      相关资源
      最近更新 更多