postgre你能解释一下下面的SQL(postgres)代码吗



我向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的意思是:

    1. 从表中获取所有列
    2. 如果列"code"等于<match> + <value of "code" column>

    最新更新