PostgreSQL中筛选Ident列非8位纯数字行的方法
PostgreSQL筛选非8位纯数字的行
需求明确:从表中筛选出Ident列不符合恰好8位纯数字的所有行,包括含非数字字符、空格、数字位数不足8位或超过8位的行,仅排除示例里ID5这种严格8位纯数字的行。
你之前用的正则表达式是匹配各类数字格式(含小数、科学计数法),完全不符合需求,正确写法应该用精准匹配8位纯数字的正则:
SELECT * FROM your_table_name WHERE ident !~ '^[0-9]{8}$';
或者更易读的写法:
SELECT * FROM your_table_name WHERE NOT (ident ~ '^[0-9]{8}$');
正则说明:
^:匹配字符串开头[0-9]{8}:匹配恰好8个数字字符$:匹配字符串结尾
执行这条语句后,会返回示例表中ID1、2、3、4、6的行,ID5的行被排除。
内容的提问来源于stack exchange,提问作者Lukas
相关产品推荐
相关产品推荐

