首页 > 解决方案 > 你能解释一下下面的 SQL (postgres) 代码吗?

问题描述

我要求 SO 进行查询,以查找表中具有“代码”条目的所有行,该条目是搜索字符串的子字符串,并添加了出现在搜索字符串末尾的条件。

因此,对“12345”的查询应返回“2345”、“345”、“45”和“5”。

我得到了这个答案,它有效。我已阅读文档,但仍然不理解查询。有人可以解释一下吗

SELECT * from yourtable
where '12345' like '%' || Code

标签: sqlpostgresql

解决方案


通常 LIKE 以相反的方式使用。

例如:

SELECT * FROM SomeTable
WHERE SomeColumn LIKE '%xxx%'  

因此,您检查该列是否与具有模式的固定字符串匹配。

但这个答案的聪明之处在于它适得其反。

它再次检查从列创建的模式的固定字符串。

SELECT * FROM SomeTable
WHERE 'bar456' LIKE '%' || SomeColumn;

在此示例中,如果“SomeColumn”包含值“56”?
然后'%' || SomeColumn形成字符串'%56'

所以'bar456'就像'%56',因为它以'56'结尾
并且'bar456'也像'%ar456'


推荐阅读