【发布时间】:2019-01-09 04:22:43
【问题描述】:
我正在尝试在 sql 语句中使用正则表达式来删除字符串“文本”中的所有空格和数字,这可能看起来像
1. 000000123456 (No space)
2. 00000 123456 (spaces in the beginning and end of string)
3. 90330000 45 (2 spaces at the end)
到目前为止,我已经能够提出以下解决方案:
select regexp_replace('text','\\s(^[0-9]*)\\s','\\1')
select regexp_replace('text','[[:blank:]]+[^[0-9]*][[:blank:]]+','\\1')
我得到的结果是:
1. 000000123456
2. 00000 123456
3. 90330000 45
我按原样获取文本。如果我尝试使用
删除数字regexp_replace('text','^[0-9]*','\\1'),
它工作正常 - 所有数字都被删除并且值导致''(null)。但是带有空格的文本不会删除数字或空格。
我在这里做错了什么?
【问题讨论】:
-
你为什么要用
\\1作为替代品?这是一个捕获组,但如果你只是想删除文本,你可能不需要这个。 -
您要删除任何数字和空格吗?那么,
00000 123456会变成空字符串吗? -
请为每个示例字符串添加预期结果(在字符串周围加上单引号以便于测试)。
-
是的,维克托。我希望正则表达式检查字符串是否只有数字和空格并将其评估为''(空白)值。
-
@mickmackusa 抱歉,我找不到:(
标签: sql regex regexp-replace