You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL+Rails:如何查询body非空且非纯空白的Note记录

PostgreSQL + Ruby On Rails 中排除空/空白body的Note查询条件

核心需求

查询notes表时,排除body字段为NULL或**仅包含空白字符(空格、换行、制表符等)**的记录,仅保留有实际内容的记录。

可行的ActiveRecord查询条件

方式一:使用TRIM函数处理空白字符

Note.where("body IS NOT NULL AND TRIM(body, '\\s') != ''")
  • 原理:先过滤掉body为NULL的记录,再通过TRIM(body, '\\s')去除所有空白字符(包括空格、换行、制表符),最终筛选出处理后内容非空的记录。

方式二:使用正则匹配非空白字符

Note.where("body ~* '\\S'")
  • 原理:利用PostgreSQL的正则匹配语法,~*表示不区分大小写的正则匹配,\\S代表任意非空白字符。该条件会自动排除NULL值(NULL与正则匹配的结果为NULL,不会被选中),同时筛选出包含至少一个非空白字符的记录,更简洁高效。

效果验证

若notes表存在以下记录:

  • id: 1, body: " \t\n "(仅空白字符)→ 被排除
  • id: 2, body: NULL → 被排除
  • id: 3, body: "这是一条有效笔记" → 被选中

执行上述任意查询,都会仅返回id为3的有效记录,符合需求。

内容的提问来源于stack exchange,提问作者Dorian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 12:28:20