如何编写 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 查询的性能以选择具有值的行不在子查询中的一次计数

如何获取 SQL 中具有 MAX 和 MIN 值的行的 ID

如何编写 SQL 查询以查找表中的重复项

SQL 获取具有相同 id 的所有行的计数

如何编写一个查询以从SQL Server中包含类似名称的多个表中获取数据