sql - 获取仅包含一个特殊字符的行
问题描述
我有一个 SQL 查询,它返回一些具有以下格式的行:
DB_host
DB_host_instance
我如何过滤以获取仅具有“DB_host”格式的行(设置条件以返回仅出现一次“_”的值)
我尝试使用[0-9a-zA-Z_0-9a-zA-Z]
,但似乎它不正确。请建议。
解决方案
一个简单的方法是正则表达式:
where regexp_like(col, '^[^_]+_[^_]+$')
当有一个没有下划线的字符串后跟一个下划线后跟另一个没有下划线的字符串时,这将匹配完整的字符串。
您也可以使用 来执行此操作LIKE
,但它更复杂:
where col like '%\_%' and col not like '%\_%\_%'
也就是说,有一个下划线但没有两个。\
是必需的,因为_
它是模式的通配符LIKE
。
推荐阅读
- sql - 如何获得基于其他总计和值的值的总百分比
- python - tkinter 中 stringvar.get() 和 Entry.get 的区别
- node.js - 更新 Firestore 文档中嵌套数组对象内的数组
- laravel - Laravel 7 带有 sortBy 的多个 where 子句
- python - 覆盖允许基于浏览器语言显示条件字符串的 __str__ 方法
- html - 如何将输入字段放在形状 div 的顶部?
- python - 是否可以在 pycharm 调试器中运行预定义的脚本?
- java - Hibernate 在锁定时提交对数据库的更改?
- python - MinMaxScaler 为单个输入返回相同的值
- c# - 自动完成组合框弹出窗口的自定义样式