如何删除字符串中的数字但保留postgresql中的空格?

Luf*_*ude 2 sql string postgresql

所以我有一列具有以下值,有时在开头有一个数字

turtle boat
10 banana split
lord Thanos
23 macbook
Run Code Online (Sandbox Code Playgroud)

如何查询去除数字和数字前面的空格,而不是字符串中间的空格?

预期输出:

turtle boat
banana split
lord Thanos
macbook
Run Code Online (Sandbox Code Playgroud)

我从这里的另一个问题中尝试的查询:

select regexp_replace(mycolumn, '[^[:alpha:]]', '', 'g')
Run Code Online (Sandbox Code Playgroud)

此查询的问题在于它完全删除了所有空格

kli*_*lin 5

您可以排除除字母和空格之外的所有字符。此外,用于trim()删除前导或尾随空格:

with my_data(mycolumn) as (
values
    ('turtle boat'),
    ('10 banana split'),
    ('lord Thanos'),
    ('23 macbook')
)

select trim(regexp_replace(mycolumn, '[^[:alpha:]\s]', '', 'g'))
from my_data

    btrim     
--------------
 turtle boat
 banana split
 lord Thanos
 macbook
(4 rows)    
Run Code Online (Sandbox Code Playgroud)


gui*_*ido 4

这将删除前导数字和空格:

\n\n
select regexp_replace(\'10 banana split\', \'^\\d+ \', \'\');\n\n/^\\d+[ ]/\n ^ asserts position at start of a line\n  \\d+ matches a digit (equal to [0-9])\n    + Quantifier \xe2\x80\x94 Matches between one and unlimited times, as many times as possible, giving back as needed (greedy)\n     [ ] matches the character \' \' literally (case sensitive)\n
Run Code Online (Sandbox Code Playgroud)\n\n

用于“global”的修饰符g就是为什么在正则表达式中所有空格都被删除,与非字母字符匹配。

\n\n

在这里摆弄

\n

  • 我喜欢剥离前导数字,而不是剥离前导非 alpha (而不是空格)。要么有效。解决该号码似乎更合适,因为操作人员希望删除潜在的领先号码。 (2认同)