首页 > 解决方案 > 获取仅包含一个特殊字符的行

问题描述

我有一个 SQL 查询,它返回一些具有以下格式的行:

DB_host
DB_host_instance

我如何过滤以获取仅具有“DB_host”格式的行(设置条件以返回仅出现一次“_”的值)

我尝试使用[0-9a-zA-Z_0-9a-zA-Z],但似乎它不正确。请建议。

标签: sqlstringoraclewhere-clause

解决方案


一个简单的方法是正则表达式:

where regexp_like(col, '^[^_]+_[^_]+$')

当有一个没有下划线的字符串后跟一个下划线后跟另一个没有下划线的字符串时,这将匹配完整的字符串。

您也可以使用 来执行此操作LIKE,但它更复杂:

where col like '%\_%' and col not like '%\_%\_%'

也就是说,有一个下划线但没有两个。\是必需的,因为_它是模式的通配符LIKE


推荐阅读