mysql,空格等于空字符串
只花了我2个小时来解决我后端的问题。
原因是空字符串等于空格:
SELECT ' ' = '';
-> 1
SELECT STRCMP(' ', '');
-> 0 /* means equal */
有趣的是,
SELECT '' REGEXP '[ ]';
-> 0
SELECT '' REGEXP ' ';
-> 0
SELECT ' ' REGEXP ' ';
-> 1
我能阻止这个吗? 这是一个设置吗?
这个失败的原因在这里的文档http://dev.mysql.com/doc/refman/5.0/en/char.html中解释:
根据分配给列的字符集归类对CHAR和VARCHAR列中的值进行排序和比较。
所有MySQL归类都是PADSPACE类型。 这意味着MySQL中的所有CHAR,VARCHAR和TEXT值都会进行比较,而不考虑任何尾随空格。 在此上下文中的“比较”不包括LIKE模式匹配运算符,其尾部空格是重要的。
解决此问题的一种方法是将其转换为BINARY
SELECT BINARY '' = ' ';
0
你也可以使用LIKE
:
SELECT '' LIKE ' ';
0
链接地址: http://www.djcxy.com/p/89697.html
上一篇: mysql, space equals empty string
下一篇: Why there is the need of using regularization in machine learning problems?