如何筛选出包含括号内数字的结果列?
嘿,这问题我熟!要筛选出name列里带括号内包含数字的行对吧?我给你整理了几种靠谱的解决方法,适配不同的数据库场景~
需求回顾
从你的原始数据表中,只保留name字段里存在类似(21)、(123)这种“括号包裹数字”格式的记录,排除像abc这种无数字括号的行。
原始数据表
| id | name |
|---|---|
| 1 | abc |
| 2 | rav (21) |
| 3 | nag (123) |
解决方案
方案1:正则表达式匹配(精准度高,适合支持正则的数据库)
如果你的数据库支持正则(比如MySQL、PostgreSQL、SQLite等),用这种方法最精准:
MySQL/MariaDB 写法
SELECT id, name FROM your_table_name -- 替换成你的实际表名 WHERE name REGEXP '\\([0-9]+\\)';
PostgreSQL 写法
SELECT id, name FROM your_table_name WHERE name ~ '\([0-9]+\)';
方案2:通用LIKE匹配(兼容性强,适合所有数据库)
如果你的数据库不支持正则,用LIKE通配符也能满足需求,虽然精准度略低,但足够应对当前场景:
SELECT id, name FROM your_table_name WHERE name LIKE '%(%[0-9]%)%';
筛选后结果表
| id | name |
|---|---|
| 2 | rav (21) |
| 3 | nag (123) |
简单解释
- 正则表达式里的
\([0-9]+\):\(和\)是转义后的括号(避免被当成正则的特殊语法),[0-9]+表示匹配1个或多个数字,确保括号里确实有数字。 - LIKE写法里的
%(%[0-9]%)%:%代表任意长度的字符,整个表达式的意思是“字符串里存在一段包含数字的括号内容”。
内容的提问来源于stack exchange,提问作者Suresh Babu
相关产品推荐
相关产品推荐

