字段中的不可见数据

时间:2013-01-11 22:12:00

标签: mysql

以下查询没有结果:

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

我的查询没有选择它的字段是什么?我应该使用什么查询?

1 个答案:

答案 0 :(得分:3)

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

SELECT HEX(interest) FROM personal_interest WHERE id = 19496

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

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