始终将NULL排序为空字符串或0

精神分裂症

我试图在系统中ORDER BY使用NULL空字符串相等的所有查询(仅在ORDER BY中)。我通过添加IFNULL(field, "")到所有GROUP BY字段解决此问题

现在的问题是,如果字段类型为数字,则该字段将转换为a String该字段将按20在100之前排序,因为它是按字母顺序而不是按数字顺序。如果我将“”更改为0,它将所有内容强制转换为int,这将导致对varchar字段的排序出错。

有一种通用的方式可以说“如果为NULL,则将其视为ORDER BY上的空字符串”?或者,也许是“如果字段类型是字符串,请使用此函数”?在这个简单的示例中,我可以根据字段切换辅助值,但是我正在寻找更全局的解决方案。

表格数据示例:

---------------
|id|person|age|
|1 |Zzz   |100|
|2 |      |0  |
|3 |NULL  |2  |
|4 |      |2  |
---------------

一些例子:

//correct results
SELECT * FROM test ORDER BY IFNULL(`person`, ""), id ASC;
//null and empty strings not sorted properly
SELECT * FROM test ORDER BY IFNULL(`person`, 0), id ASC;

//correct results
SELECT * FROM test ORDER BY IFNULL(`age`, 0), id ASC;
//100 is turned to a string and therefor appears above 2
SELECT * FROM test ORDER BY IFNULL(`age`, ""), id ASC;
精神分裂症

好吧,如果有人在这篇文章上碰巧,它暗示了解决此问题的最佳方法是使用NULLIF而不是IFNULL将所有NULL值转换为空字符串。

这仅在您处理字符串而不是NULL数字时才有效。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将简单的json字符串转换为对象,始终将属性设置为null

来自分类Dev

甚至避免使用Option字段。字符串始终为空字符串,整数可选字段为0

来自分类Dev

空字符串测试始终为true

来自分类Dev

字符串长度始终为 0

来自分类Dev

setText()方法是否始终将值设置为字符串?

来自分类Dev

检查空字符串是否为null?

来自分类Dev

以html格式将空字符串更新为NULL

来自分类Dev

如果日期为NULL,则显示空字符串

来自分类Dev

加载 tempView 时空字符串显示为 null

来自分类Dev

Python-将空字符串设置为0

来自分类Dev

将字符串转换为数字,将空字符串或空字符串解释为0

来自分类Dev

字符串末尾的空字符'\ 0'

来自分类Dev

公共字符串的值始终为null

来自分类Dev

公共字符串的值始终为null

来自分类Dev

MVC4-发布字符串始终为null

来自分类Dev

XHR responseText为空字符串

来自分类Dev

PHP开关为空字符串

来自分类Dev

ImmNotifyIME()是否为空字符串?

来自分类Dev

Oracle空字符串/ NULL

来自分类Dev

Java空字符串等于NULL

来自分类Dev

Java空字符串等于NULL

来自分类Dev

在Python 3中值为None或空字符串时进行反向排序

来自分类Dev

fs.readFileSync始终返回空字符串

来自分类Dev

$ {NSD_GetText}始终返回空字符串

来自分类Dev

asp.net JavascriptSerializer可以将null编码为空字符串吗?

来自分类Dev

将整个数据库中的空字符串('')设置为NULL

来自分类Dev

使用JsonConverter将Null属性设置为空字符串-System.Text.Json

来自分类Dev

确定javascript对象上的所有属性是否为null或空字符串

来自分类Dev

在插入数据库时将空字符串设置为null

Related 相关文章

热门标签

归档