我向SO请求了一个查询,以查找表中具有作为搜索字符串的子字符串的"code"条目的所有行,并添加了它出现在搜索字符串末尾的条件。
因此,查询"12345"应返回"2345"、"345"、"45"one_answers"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">
您需要两个相关的文档链接:
PostgreSQL模式匹配:'12345' like '%'
PostgreSQL CONCATNATE(||(运算符:<match> || Code
SQL的意思是:
- 从表中获取所有列
- 如果列"code"等于
<match> + <value of "code" column>