gpt4 book ai didi

sql - 为什么在使用 regexp_replace 时每个字符前后都会出现空格?

转载 作者:行者123 更新时间:2023-12-04 10:56:34 25 4
gpt4 key购买 nike

我正在尝试用空格 (' ') 替换所有特殊符号。

到目前为止,我得到的是:

select regexp_replace(column_name, '-|"|~|!|(|)|-', ' ') from tablename;

开始 COLUMN_NAME :He!lo我最终得到的是:H e l o

我做错了什么?提前致谢!

最佳答案

您的问题是 |(|)| 括号测试。括号是正则表达式中的一个特殊字符,因此您实际上是在测试 (|) ,它只是捕获每个字符(管道在这里什么都不做)。

例如,您正在捕获字符“H”,然后用捕获的 H 和一个空格 ' ' 替换该捕获。这也意味着在此测试后出现的任何字符(您的连字符)都不会被替换,因为它已经在捕获中被捕获。

据说更好的方法是:

REGEXP_REPLACE(COLUMN_NAME, '[^0-9a-zA-Z]', ' ')

括号中的插入符号表示“如果发现不在这些范围内的字符”

或者,您要测试的字符列表是有限的,那么:

REGEXP_REPLACE(COLUMN_NAME, '["~!\(\)]', ' ')

特别注意用反斜杠转义列表中的正则表达式特殊字符。 Here's a good resource for identifying special characters

there are 12 characters with special meanings: the backslash \, the caret ^, the dollar sign $, the period or dot ., the vertical bar or pipe symbol |, the question mark ?, the asterisk or star *, the plus sign +, the opening parenthesis (, the closing parenthesis ), the opening square bracket [, and the opening curly brace {,

关于sql - 为什么在使用 regexp_replace 时每个字符前后都会出现空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48546209/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com