MySQL LIKE函数中的%有啥用

Posted

技术标签:

【中文标题】MySQL LIKE函数中的%有啥用【英文标题】:What is the use of % in MySQL LIKE functionMySQL LIKE函数中的%有什么用 【发布时间】:2015-04-15 16:32:36 【问题描述】:

当我学习phpmysql的搜索功能时,有一个查询代码:

SELECT id, category, location
FROM table
WHERE
(
    category LIKE '%keyword%'
    OR location LIKE '%keyword%'
)

我无法理解在查询中使用 % 并使用转义字符时,%keyword% 是否必须更改为 %$variable%

【问题讨论】:

【参考方案1】:

% 是任意字符串的占位符。

因此,如果您有 WHERE category LIKE '%keyword%' 的内容,这将返回包含“关键字”一词的所有类别。

我猜你正在寻找包含给定关键字的东西,并且关键字在你的变量中,所以这将是WHERE category LIKE '%$variable%'$variable 是包含关键字的变量。这当然有一些问题,比如关键字本身不能包含%,否则它必须被转义并且存在可能的SQL注入问题,应该使用prepared statements来解决,但这些问题似乎有点超出问题的范围。

【讨论】:

和变量有什​​么关系(见问题)。 那么,我应该使用 % 作为变量吗? 我不明白你的意思,抱歉。如果您担心转义,那么您可能应该使用准备好的语句。 我的意思是我应该使用WHERE category LIKE '%$variable%'WHERE category LIKE '$variable' 这取决于你想要什么。但最后,结果查询将是您放入字符串中的变量的内容,因此如果您的变量包含bunny,那么WHERE category LIKE '%$variable%' 将变为WHERE category LIKE '%bunny%'。您也可以先将 % 添加到 $variable 中的字符串中,然后将其留在 WHERE 中并获得相同的结果字符串

以上是关于MySQL LIKE函数中的%有啥用的主要内容,如果未能解决你的问题,请参考以下文章

C 函数中的静态变量有啥用? [复制]

ActivityManager 中的奇怪函数:isUserAMonkey。这是啥意思,它有啥用?

Codeception 中的“expect_file()”函数有啥用?

IPC_CREAT 有啥用| 0666 C 中 shmget() 函数中的标志

python中的set有啥用

matlab中的eval有啥用?