<code>| title | |-----------------| | Elm Tree | | elm tree | | Red Elm | | RED ELM | | Oak Tree | </code>
The query SELECT * FROM trees WHERE LOWER(trees.title) LIKE '%elm%'
will return the following rows:
<code>| title | |-----------------| | Elm Tree | | elm tree | | Red Elm | | RED ELM |</code>
This demonstrates the case-insensitive nature of the search using the LOWER function. Note that this approach converts all values to lowercase before comparison, which may affect performance on very large tables. Other database systems may offer alternative case-insensitive comparison methods.
SQL不区分大小写的通配符搜索
使用LIKE操作符在SQL中执行通配符搜索时,大小写敏感性可能是一个挑战。例如,查询SELECT * FROM trees WHERE trees.title LIKE '%elm%'
只会返回title列包含精确字符串“elm”的结果。
解决方案:使用LOWER函数
MySQL提供了一种使用LOWER函数解决此问题的方案。通过将列包含在LOWER函数中,搜索将变得不区分大小写。方法如下:
<code class="language-sql">SELECT * FROM trees WHERE LOWER(trees.title) LIKE '%elm%'</code>
在此查询中,LOWER函数在执行LIKE搜索之前将title列的内容转换为小写。因此,查询将返回所有title的小写表示形式包含字符串“elm”的行。
示例
考虑一个名为trees的假设表,包含以下行:
<code>| title | |-----------------| | Elm Tree | | elm tree | | Red Elm | | RED ELM | | Oak Tree |</code>
查询SELECT * FROM trees WHERE LOWER(trees.title) LIKE '%elm%'
将返回以下行:
<code>| title | |-----------------| | Elm Tree | | elm tree | | Red Elm | | RED ELM |</code>
这演示了使用LOWER函数进行不区分大小写搜索的特性。请注意,此方法会在比较之前将所有值转换为小写,这可能会影响大型表的性能。其他数据库系统可能提供替代的不区分大小写比较方法。
<code></code>
以上是如何在 SQL 中执行不区分大小写的通配符搜索?的详细内容。更多信息请关注PHP中文网其他相关文章!