Match '%' sign when searching in MySQL database

后端 未结 5 1043
礼貌的吻别
礼貌的吻别 2020-12-19 09:49

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

相关标签:
5条回答
  • 2020-12-19 10:24

    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\\%'");
    
    0 讨论(0)
  • 2020-12-19 10:29

    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.

    0 讨论(0)
  • 2020-12-19 10:38

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

    0 讨论(0)
  • 2020-12-19 10:45

    In latest version you can also try

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

    regards

    0 讨论(0)
  • 2020-12-19 10:48

    Here is an example:

    $sql = 'SELECT * FROM tableName WHERE fieldName LIKE "wildcard\%"';
    
    0 讨论(0)
提交回复
热议问题