这个网站过去帮了我很多,但现在我迷路了.在此先感谢您的指导.
我有一个包含二进制值的MysqL表,如下例所示.我不能改变桌子.@H_404_3@
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都在那里)@H_404_3@
现在我想创建一个SQL查询来查找该值为true的行的id.@H_404_3@
SELECT id FROM test WHERE nid = 'ÞFÈ>ZPÎ×jRZ{æ×';
……不起作用.任何想法?@H_404_3@
解
以HEX格式获取nid就可以了.它导致DE46C83E5A50CED70E6A525A7BE6D709,当我在这样的查询中使用它时……@H_404_3@
SELECT id FROM test WHERE HEX(nid) = 'DE46C83E5A50CED70E6A525A7BE6D709';
我得到了正确的结果.@H_404_3@
解决方法
尝试在用于搜索的二进制数据前面添加X,x或0x:
SELECT id FROM test WHERE pid = '0xÞFÈ>ZPÎ×jRZ{æ×';
编辑:尝试这个:@H_404_3@
SELECT id FROM test WHERE BINARY pid = 'ÞFÈ>ZPÎ×jRZ{æ×';
要么@H_404_3@
SELECT id FROM test WHERE HEX(pid) = BIN2HEX('0xÞFÈ>ZPÎ×jRZ{æ×');
假设在这里:How to select with a binary field ? (php,mysql)@H_404_3@
如果不是上面的工作:尝试以HEX格式获取pid,比如@H_404_3@
SELECT id,HEX(pid) pid,test FROM test
SELECT id,test FROM test WHERE HEX(pid) = '{$my_pid}'
但我不确定你是如何获得PHP的pid数据,甚至是否将二进制数据传递给你的select – where query …只是猜测由于PHP标签…@H_404_3@