匹配“%”在 MySQL 数据库中搜索时签名

发布于 2024-10-06 04:05:04 字数 90 浏览 2 评论 0原文

我想在 MySQL 中匹配这个 'wildcard %'
我尝试使用 escape \% 但它不起作用。

I would like to match this 'wildcard %' in MySQL.
I tried using escape \% and it is not working.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

旧话新听 2024-10-13 04:05:04

默认转义字符是 \。因此,只需在 % 前面加上 \ 即可: \%

手册清楚地说:

测试 a 的文字实例
通配符,前面带有
转义字符。如果你不这样做
指定转义符,“\”是
假设。

Stack%Overflow 中搜索 %

mysql> select 'Stack%Overflow' like '%\%%';
+------------------------------+
| 'Stack%Overflow' like '%\%%' |
+------------------------------+
|                            1 |  <----- Found
+------------------------------+
1 row in set (0.00 sec)

StackOverflow 中搜索 %

mysql> select 'StackOverflow' like '%\%%';
+-----------------------------+
| 'StackOverflow' like '%\%%' |
+-----------------------------+
|                           0 |   <----- Not Found
+-----------------------------+
1 row in set (0.00 sec)

编辑:

如果您从 PHP 调用此查询,则必须使用 \\。这是因为即使 PHP 也使用 \ 作为转义字符。所以要让 MySQL 得到一个 \ 你需要在 PHP 中有 \\

The default escape character is \. So just prefix % with a \ as: \%:

The manual clearly says:

To test for literal instances of a
wild-card character, precede it by the
escape character. If you do not
specify the ESCAPE character, “\” is
assumed.

Search for % in Stack%Overflow:

mysql> select 'Stack%Overflow' like '%\%%';
+------------------------------+
| 'Stack%Overflow' like '%\%%' |
+------------------------------+
|                            1 |  <----- Found
+------------------------------+
1 row in set (0.00 sec)

Search for % in StackOverflow:

mysql> select 'StackOverflow' like '%\%%';
+-----------------------------+
| 'StackOverflow' like '%\%%' |
+-----------------------------+
|                           0 |   <----- Not Found
+-----------------------------+
1 row in set (0.00 sec)

EDIT:

If you are calling this query from PHP, you'll have to use \\. This is because even PHP uses \ as the escape character. So make MySQL get a \ you need to have \\ in PHP.

荆棘i 2024-10-13 04:05:04

好的,我需要使用 doble (\\) 来匹配数据库中的 %

ok i need to use doble (\\) to match the % in the database

眼眸里的那抹悲凉 2024-10-13 04:05:04

这是一个例子:

$sql = 'SELECT * FROM tableName WHERE fieldName LIKE "wildcard\%"';

Here is an example:

$sql = 'SELECT * FROM tableName WHERE fieldName LIKE "wildcard\%"';
腹黑女流氓 2024-10-13 04:05:04

您还需要对 PHP 字符串中的 \ 进行转义,否则 PHP 会认为您实际上是在转义 %,从而将文字 % 发送到 sql 查询,所以我认为这应该可行:

mysql_query("select * from bla where bli like '\\%somewords\\%'");

You need to escape the \ in PHP string as well, otherwise PHP would think that you are actually escaping the %, thus sending literal % to the sql query, so I think this should work:

mysql_query("select * from bla where bli like '\\%somewords\\%'");
南笙 2024-10-13 04:05:04

在最新版本中您也可以尝试

select * from tbl1 where TxtExpr REGEXP '^%';

问候

In latest version you can also try

select * from tbl1 where TxtExpr REGEXP '^%';

regards

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文