我有一个带有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),但在我的情况下,我还没有得到相同的字符数。
答案 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 使用已解析的字符。