Oracle REGEXP_REPLACE无法去除开头数字及空格问题求助
解决REGEXP_REPLACE去除开头数字空格无效的问题
问题根源
你使用的正则表达式带了@"和"标记,这是C#等编程语言里定义字符串字面量的语法,SQL中不需要这些额外符号,导致正则无法匹配目标内容。
修正方案
根据你使用的数据库类型,选择对应的SQL语句:
MySQL
SELECT REGEXP_REPLACE(test_column, '^[0-9]*\\s*', '') FROM test_table;
- 用
[0-9]替代\d(部分MySQL版本对\d支持不佳),\\s是转义后的空格匹配符 - 匹配每行开头的所有数字,以及后续的任意空格,替换为空
PostgreSQL
SELECT REGEXP_REPLACE(test_column, '^\d*\s*', '', 'g') FROM test_table;
- 支持
\d匹配数字,'g'参数表示全局替换(针对单字段内多行场景,单条记录单行可省略)
SQL Server(2017及以上版本)
SELECT REGEXP_REPLACE(test_column, '^\d*\s*', '') FROM test_table;
- 原生支持
\d匹配数字,默认匹配行首内容并替换
效果验证
针对你的测试数据:
000000001 ItemA 000000002 ItemB 000000003 ItemC
执行修正后的语句后,会输出:
ItemA ItemB ItemC
内容的提问来源于stack exchange,提问作者hexidis
相关产品推荐
相关产品推荐

