转义'%'字符

时间:2015-06-10 22:12:10

标签: mysql sql

我有一个带有名称列的图像表。 name列中的值可能包含百分号,在使用like运算符时,它本身就是一个通配符。我目前在名称列中有以下相关值:“a%”和“blah%blah”。

执行时,我没有按预期得到任何结果:

select name from image where name like '\%'

执行以下操作时,我得到上述两条记录:

select name from image where name like '%\%'

我理解为什么我以“a%”作为名称获取记录。但是,我不明白为什么我会得到“等等。”如果“blah%blah”有一个百分比字符作为最后一个字符,那就没有意义,但事实并非如此。

我在这里做错了还是这个MySQL错误?

1 个答案:

答案 0 :(得分:1)

this错误中所述,您需要使用另一种排序规则作为解决方法:

SQL Fiddle

使用utf8_unicode_ci colation

CREATE TABLE image
    (`id` int, `name` varchar(55) collate utf8_unicode_ci)
;

INSERT INTO image
    (`id`, `name`)
VALUES
    (1, 'a%'),
    (2, 'blah%blah')
;

查询1

SELECT
  name
FROM
  image
WHERE name like '%\%'

<强> Results

|      name |
|-----------|
|        a% |
| blah%blah |

SQL Fiddle

使用utf8_general_ci整理

CREATE TABLE image
    (`id` int, `name` varchar(55) collate utf8_general_ci)
;

INSERT INTO image
    (`id`, `name`)
VALUES
    (1, 'a%'),
    (2, 'blah%blah')
;

查询1

SELECT
  name
FROM
  image
WHERE name like '%\%'

<强> Results

| name |
|------|
|   a% |