如何编写 SQL 查询以获取具有相同前缀的行
Posted
技术标签:
【中文标题】如何编写 SQL 查询以获取具有相同前缀的行【英文标题】:How to write an SQL query to get rows with the same prefix 【发布时间】: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”这样的逻辑运算符。 谢谢。
【问题讨论】:
【参考方案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。我会编辑它。以上是关于如何编写 SQL 查询以获取具有相同前缀的行的主要内容,如果未能解决你的问题,请参考以下文章
如何编写oracle SQL查询以特定顺序获取匹配和不匹配的行对(基于键列)
如何提高 SQL Server 查询的性能以选择具有值的行不在子查询中的一次计数