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

使用Oracle正则表达式查询筛选指定格式记录(排除Place ID 3、4)

Oracle正则表达式筛选目标记录方案

我来帮你搞定这个Oracle正则筛选的需求,直接上解决方案加详细解释:

完整SQL语句

假设你的数据表名为your_table,需要检查的目标字段为target_column,Place ID字段为place_id,对应的查询语句如下:

SELECT *
FROM your_table
WHERE (
    -- 筛选存在前导或尾随空格的记录
    REGEXP_LIKE(target_column, '^[[:space:]]+|[[:space:]]+$')
    OR
    -- 筛选下划线前后带有空格的记录(含前有空格、后有空格、前后都有三种情况)
    REGEXP_LIKE(target_column, '[[:space:]]_|_[[:space:]]')
)
AND place_id NOT IN (3, 4);

各部分正则说明

1. 匹配前导/尾随空格

正则表达式 ^[[:space:]]+|[[:space:]]+$ 的含义:

  • ^[[:space:]]+:匹配字段开头的一个或多个空白字符(包括空格、制表符等,若只想匹配普通空格,可替换为 ^ +)
  • [[:space:]]+$:匹配字段结尾的一个或多个空白字符(同理,替换为 +$ 可仅匹配普通空格)
  • |:逻辑或,满足任意一种情况即符合条件

2. 匹配下划线前后带有空格

正则表达式 [[:space:]]_|_[[:space:]] 的含义:

  • [[:space:]]_:匹配“空白字符+下划线”的组合(下划线前有空格)
  • _[[:space:]]:匹配“下划线+空白字符”的组合(下划线后有空格)
  • |:逻辑或,覆盖下划线前有空格、后有空格,甚至前后都有空格的所有情况

3. 排除指定Place ID

place_id NOT IN (3, 4) 直接过滤掉Place ID为3和4的记录,确保结果集中不包含这两类数据。

可选补充

如果你的target_column可能存在NULL值,且需要将NULL也纳入筛选范围(因为REGEXP_LIKE对NULL会返回FALSE),可以在WHERE条件中额外添加:

OR target_column IS NULL

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:52:10