sql - 你能解释一下下面的 SQL (postgres) 代码吗?
问题描述
我要求 SO 进行查询,以查找表中具有“代码”条目的所有行,该条目是搜索字符串的子字符串,并添加了出现在搜索字符串末尾的条件。
因此,对“12345”的查询应返回“2345”、“345”、“45”和“5”。
我得到了这个答案,它有效。我已阅读文档,但仍然不理解查询。有人可以解释一下吗
SELECT * from yourtable
where '12345' like '%' || Code
解决方案
通常 LIKE 以相反的方式使用。
例如:
SELECT * FROM SomeTable
WHERE SomeColumn LIKE '%xxx%'
因此,您检查该列是否与具有模式的固定字符串匹配。
但这个答案的聪明之处在于它适得其反。
它再次检查从列创建的模式的固定字符串。
SELECT * FROM SomeTable
WHERE 'bar456' LIKE '%' || SomeColumn;
在此示例中,如果“SomeColumn”包含值“56”?
然后'%' || SomeColumn
形成字符串'%56'
所以'bar456'就像'%56',因为它以'56'结尾
并且'bar456'也像'%ar456'
推荐阅读
- php - 如何使用 PHP Referrer-Policy 将 Firefox 推荐人设置为“无推荐人”?
- arrays - Bash 通过循环使用数组对文件内容进行操作和排序
- javascript - 在 tr 中附加 td,然后在 tbody 中
- php - XML to PHP array issue - Columns being combined into a single Row instead multiple rows
- firebase - 如何在 firebase 托管的 webapp 中获取 firebase 函数 URL?
- kubernetes - CoreDNS 后缀重写导致 DNS 查询返回重写的名称
- docker - 在损坏的系统上备份 docker 卷。卷恢复
- typescript - Ionic 4 路由器没有 navigate 和 navigateByUrl
- elixir - 为什么构造href链接时字符串插值不起作用?
- java - 具有可比接口的通用列表