ruby-on-rails - 数组中空白元素的Rails顺序
问题描述
假设以下数组:
["Palm nova", "", "Palm trad", "Palm discard", nil, "Palm actual"]
目标是提取列表的第一项,即不是空白""
或nil
rails where 子句允许根据一个或多个属性对结果进行asc
排序 desc
。但是当使用 Postgresql 作为数据库时,空白项放在哪里呢?
""
和nil
待遇一样吗?
解决方案
根据定义,空字符串通过将它们与<
and>
运算符进行比较来排序,如文档中所述:
...升序将较小的值放在首位,其中“较小”是根据 < 运算符定义的。同样,降序由 > 运算符确定
“” 和 nil 是否被同等对待?:不。同样,来自文档“默认情况下,空值排序好像大于任何非空值”,所以如果你按DESC
你的 NULL 值排序,如果使用ASC
它们将在最后。
基本上你可以做三件事;
- 或者修改您的查询以在过滤时省略 NULL 和/或空字符串(如果可能),
- 或操作生成的数组以过滤掉 nil 和/或空字符串,
- 或者在查询中添加 ORDER BY 子句以确保 NULL 和/或空字符串在结果中始终具有已识别的顺序。
推荐阅读
- android - 在 Android 上使用 gRPC 处理文件下载
- ios - 隐藏没有高度限制的元素空间
- java - 为什么这段代码违背我的意愿迭代两次,为什么我得到空值?
- javascript - Changing the class name JS
- swift - setValue 不移动 UISlider
- sql-server - 如何将inkPicture控件内容存储在SQL Server表中并将内容读回inkPicture控件?
- xamarin.forms - OnNavigatedTo 或 Initialize 太迟无法绑定
- android - How do I hide Material Bottom App Bar when Coordinator Layout's child fragment is scrolled?
- python - 从 python 中的循环创建多个文件 - [WinError 3] 和 [Errno 2]
- c - 在不使用 C 中的任何库的情况下从 char 数组中删除子字符串