【问题标题】:Can I use WHERE with table field on right side of LIKE?我可以将 WHERE 与 LIKE 右侧的表字段一起使用吗?
【发布时间】:2022-07-19 16:14:58
【问题描述】:

我有一个 SQL 表,其中包含我想与较长字符串匹配的字符串前缀。假设包含前缀的列名为prefix

我现在想对所有以较长字符串为前缀的行进行简单搜索。我的第一个想法是使用类似这样的查询:

SELECT prefix FROM Prefixes WHERE 'long string' LIKE prefix%

问题的关键是我如何正确地使用 WHERE 子句。如何告诉 SQL 使用列 prefix 中的值作为我的参数 'long string' 的前缀?

我是否也可以告诉 SQL 不仅使用列“前缀”作为 'long string' 的前缀,而是检查 'long string' 是否在其自身的任何位置包含 prefix

类似这样的:

SELECT prefix FROM Prefixes WHERE 'long string' LIKE %prefix%

如果供应商特定的东西在这里发挥作用,我使用 JDBC 运行查询,我的数据库是 H2 或 PostgreSQL。

【问题讨论】:

    标签: sql postgresql jdbc h2 sql-like


    【解决方案1】:

    使用连接生成包含列prefix 的值的字符串,并带有通配符:

    SELECT prefix FROM Prefixes WHERE 'long string' LIKE prefix || '%'
    

    如果你想检查'长字符串'是否在其自身的任何地方包含前缀

    SELECT prefix FROM Prefixes WHERE 'long string' LIKE '%' || prefix || '%'
    

    你也可以使用CONCAT()函数:

    SELECT prefix FROM Prefixes WHERE 'long string' LIKE CONCAT(prefix, '%')
    

    或:

    SELECT prefix FROM Prefixes WHERE 'long string' LIKE CONCAT('%', prefix, '%')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-12-16
      • 1970-01-01
      • 2010-11-04
      相关资源
      最近更新 更多