2013-01-11 74 views
2

下列查询没有结果:不可见的数据

SELECT * FROM `personal_interest` WHERE LENGTH(`interest`) = 0 

SELECT * FROM `personal_interest` WHERE TRIM(`interest`) = '' 

SELECT * FROM `personal_interest` WHERE `interest` = '' 

但是这个查询

SELECT * FROM `personal_interest` WHERE person = 380298 

有以下结果:

phpMyAdmin screenshot

//编辑:

SELECT HEX(interest) FROM personal_interest WHERE id = 19496 

结果:

phpMyAdmin screenshot 2

可能是什么在我的查询不选择它的领域?我应该使用什么查询?

+0

感谢eggyal!输出是0D。查询和截图添加到帖子。 – jerrygarciuh

+0

popnoodles - per post TRIM(interest)=''没有结果 – jerrygarciuh

+0

eggyal - 所以TRIM()不认为回车符是空格? – jerrygarciuh

回答

3

默认情况下,TRIM()仅删除空格。该字段可以包含其他空格(如制表符或换行符)或其他非打印字符。要查看二进制编码字段的内容,你可以使用:

SELECT HEX(interest) FROM personal_interest WHERE id = 19496 

你可以从结果看,你的字段包含0x0d,这是一个carriage return字符。要选择空白或只包含空白字符的所有记录,可以使用regular expression

SELECT * FROM personal_interest WHERE interest RLIKE '^[[:space:]]*$' 
+0

谢谢!肯定今天学到了新东西!感谢你的帮助!当SO说我被允许时会接受答案! – jerrygarciuh