如上图,sql server2012 sql语句where后面的条件没有空格,一个空格和多个空格搜出来的结果是一样的,请问这是什么原因?
空字符和空格都不占用存储空间,SQL Server 默认其是相等的。结果都是1
select iif(''=' ',1,0),iif(''=' ',1,0)
这位才说道点上了
应该是会忽略where后面的空格
有一个空格这是一个实实在在的值,你把空格当成一个字母理解,一个空格也是一个值。
因为一个空格多个都是一个空值,你搜索的字段值是为空的,所以显示的结果相同
那如果数据库里面确实存的是一个空格 搜出来的结果还会相同吗? 另外 Oracle 是否也是如此
@yangyong_yy: 相同的 Oracle 也一样
@一组: 是不是可以这样理解 在sqlserver 和 Oracle中存不了一个空格或多个空格只能存入“”?
@yangyong_yy: 因为一个空格或多个空格与""都是一个空值null的值,你存进去显示的都是一样的结果..
@一组: 也不是null值以下两条语句返回的结果还是不一样的
空格也是一个值。
都是空的,搜出来的 肯定也是一样的
那就是空值而已
因为你的数据中有空值 所以查找出来的的结果都是这一个