SQL语句where子句中isnull(column,' ') <= ' '的含义是什么?
SQL条件
where isnull(column,' ') <= ' '的过滤逻辑 首先拆分条件的执行逻辑:
isnull(column, ' ')是数据库空值替换函数:如果column字段值为NULL,就返回替换值空格' ',否则返回column本身的原始值。- 再对替换后的值做
<= ' '的比较判断,在绝大多数数据库的默认字符排序规则下,该比较的命中范围如下:
- 所有
column为NULL的记录:替换后为' ',满足' ' <= ' '的判断 - 所有
column为非NULL空字符串''的记录:空字符串排序优先级低于空格,满足比较条件 - 所有
column值全部由空格组成的记录:单空格直接满足相等判断,多空格在多数数据库的字符串比较中会忽略尾部空格,与单空格比较结果为相等,同样满足条件 - 少数
column以ASCII码小于32的控制字符(制表符、换行符、回车符等)开头的记录,这类字符排序优先级低于空格,因此整体值比较也会满足条件
这个写法属于业务中比较取巧的实现,通常用来快速筛选column字段没有实际有效内容的记录。
内容的提问来源于stack exchange,提问作者bugga boo
相关产品推荐
相关产品推荐

