我要求SO进行查询,以查找表中所有带有“代码”条目的行,其中“代码”条目是搜索字符串的子字符串,其附加条件是它出现在搜索字符串的末尾。
因此,对“ 12345”的查询应返回“ 2345”,“ 345”,“ 45”和“ 5”。
我得到了this answer,它可以工作。我已经阅读了文档,但仍然不了解查询。有人可以解释
SELECT * from yourtable
where '12345' like '%' || Code
答案 0 :(得分:3)
通常以相反的方式使用LIKE。
例如:
SELECT * FROM SomeTable
WHERE SomeColumn LIKE '%xxx%'
因此,您检查列是否与带有模式的固定字符串匹配。
但是这个答案的聪明之处在于它却相反。
它将再次检查固定字符串,该固定字符串是根据列创建的模式。
SELECT * FROM SomeTable
WHERE 'bar456' LIKE '%' || SomeColumn;
在此示例中,如果“ SomeColumn”包含值“ 56”?
然后'%' || SomeColumn
形成字符串'%56'
因此'bar456'类似于'%56',因为它以'56'结尾
而且'bar456'也类似于'%ar456'
答案 1 :(得分:1)
您需要两个相关的文档链接:
PostgreSQL Pattern Matching:'12345' like '%'
PostgreSQL CONCATENATE(||) Operator:<match> || Code
SQL的意思是
<match> + <value of "code" column>