以下查询没有结果:

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

结果如下:
//编辑:
SELECT HEX(interest) FROM personal_interest WHERE id = 19496

结果:
我的查询没有选择字段中的内容是什么?我应该使用什么查询?

最佳答案

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

SELECT HEX(interest) FROM personal_interest WHERE id = 19496

从结果中可以看到,您的字段包含0x0d,这是一个carriage return字符。要选择所有为空或只包含空白字符的记录,可以使用regular expression
SELECT * FROM personal_interest WHERE interest RLIKE '^[[:space:]]*$'

关于mysql - 现场不可见数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14287520/

10-11 22:10
查看更多