这个网站过去帮了我很多,但现在我迷路了。在此先感谢您的指导。
我有一个包含二进制值的MySQL表,如下例所示。我不能改变桌子。
CREATE TABLE `test` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`nid` binary(16) NOT NULL,
`test` varchar(45) DEFAULT NULL,
PRIMARY KEY (`id`))
这是nid的示例值: ÞFÈ>ZPÎ×jRZ{æ×
(并非所有显示,但所有16个都在那里)
现在我想创建一个SQL查询来查找该值为true的行的id。
SELECT id FROM test WHERE nid = 'ÞFÈ>ZPÎ×jRZ{æ×';
......不起作用。任何想法?
解
以HEX格式获取nid就可以了。它导致DE46C83E5A50CED70E6A525A7BE6D709,当我在这样的查询中使用它时......
SELECT id FROM test WHERE HEX(nid) = 'DE46C83E5A50CED70E6A525A7BE6D709';
我得到了正确的结果。
尝试添加 X
, x
要么 0x
在用于搜索的二进制数据前面:
SELECT id FROM test WHERE pid = '0xÞFÈ>ZPÎ×jRZ{æ×';
编辑: 试试这个:
SELECT id FROM test WHERE BINARY pid = 'ÞFÈ>ZPÎ×jRZ{æ×';
要么
SELECT id FROM test WHERE HEX(pid) = BIN2HEX('0xÞFÈ>ZPÎ×jRZ{æ×');
假设在这里: 如何用二进制字段选择? (PHP,MySQL的)
如果没有上述作品: 试着获得 pid
在 HEX
格式,像
SELECT id, HEX(pid) pid, test FROM test
然后在搜索时尝试:
SELECT id, test FROM test WHERE HEX(pid) = '{$my_pid}'
但我不确定你是如何获得的 pid
数据到PHP甚至是否将二进制数据传递给您 select - where
查询...只是猜测由于 php
标签...
尝试:
X'' --Hex Content
mysql> SELECT x'4D7953514C';
-> 'MySQL'
吉祥的最后一篇帖子向我指出了搜索二进制字段的正确方向:
SELECT * FROM test WHERE yourBinaryColumn = x'binarystuffdata';
这对我有用......