在 SQL JOIN 中使用 LIKE
在 SQL 中,执行 JOIN 操作通常需要指定不同表的列之间的匹配条件。其中一个条件涉及将表 A 中的列与表 B 中的列进行匹配,其中 B 列的内容可以在 A 列的内容之前或之后变化。这种情况需要使用 LIKE 运算符。
要实现此目的,您有多种选择:
<code class="sql">SELECT * FROM TABLE a JOIN TABLE b ON INSTR(b.column, a.column) > 0</code>
这里,INSTR() 返回第一个的位置A 列的值在 B 列中出现。匹配行是位置大于 0 的行。
<code class="sql">SELECT * FROM TABLE a JOIN TABLE b ON b.column LIKE '%'+ a.column +'%'</code>
此方法将通配符附加到 A 列值的两侧,允许在 B 列中在其之前或之后添加任何字符。
<code class="sql">SELECT * FROM TABLE a JOIN TABLE b ON b.column LIKE CONCAT('%', a.column ,'%')</code>
与之前的方法类似,此方法使用 CONCAT() 函数在 A 列值的两侧构造一个带有通配符的字符串。
为了确保不区分大小写的匹配,它是建议在比较之前将两列转换为大写。这可以通过使用 UPPER() 函数来实现。
请注意,最有效的方法将取决于所涉及的特定数据库和数据,这是通过检查 EXPLAIN 计划输出来确定的。
以上是当匹配条件涉及一个表中的列包含另一个表中的列的子字符串时,如何执行 JOIN 操作?的详细内容。更多信息请关注PHP中文网其他相关文章!