MySQL,搜索包含十六进制字符

时间:2016-01-05 15:10:41

标签: mysql

我有一个带有varchar列col1的表my_table。 UTF8

如果我在col1(气球,土豚等)中寻找包含字母a的所有行,那么我会这样做:

select col1 
from my_table
where col1 like "%a%" -- But how search for special hex character?

但是我该怎么做而不是"%a%"如果我正在寻找一个特殊的十六进制字符,在这种情况下是0xFFFC?

(这是角色:http://www.fileformat.info/info/unicode/char/fffc/index.htm

请注意,我正在寻找一种在 WHERE 子句中指定此字符的方法。我已经看到了这个https://dev.mysql.com/doc/refman/5.7/en/hexadecimal-literals.html以及Stackoverflow问题/答案,它们也在Select部分中使用了十六进制字符。我在WHERE子句中需要它。我见过这个How to find certain Hex values and Char() Values in a MySQL SELECT,但是使用了char(128),但在我的情况下,我还没有得到相同的字符数。

2 个答案:

答案 0 :(得分:1)

使用:0x61 ==' a'

select col1 
from my_table
where col1 LIKE concat('%',0x61,'%');

她是一个样本

    CREATE TABLE `tmptable` (
      `image` varchar(250) DEFAULT NULL,
      UNIQUE KEY `d` (`image`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `tmptable` (`image`)
VALUES
    ('äöüß');

> SELECT image,hex(image) FROM tmptable WHERE image LIKE concat ('%',0xC39F,'%');
+--------------+--------------------------+
| image        | hex(image)               |
+--------------+--------------------------+
| äöüß`´'      | C3A4C3B6C3BCC39F60C2B427 |
+--------------+--------------------------+
1 row in set (0.00 sec)

答案 1 :(得分:0)

你可以这样写你的“选择”:

选择 col1 来自 my_table where col1 LIKE CONCAT('%',X'FFFC','%');

您可以在文档 https://dev.mysql.com/doc/refman/5.7/en/hexadecimal-literals.html 中阅读如何使用十六进制,正如您所说 并使用 concat 使用已解析的字符。