gpt4 book ai didi

sql - oracle sql regexp_replace

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

我有一个表,其中包含这样的值。

ExpTable

+--------+   
|expCol |
+--------+
|abc.abc |
|bcd.123 |
|efg.@/. |
+--------+

而我想要的是,当句号后面的字符是字母或数字时,输出会在点后面加一个空格,如下所示:

预期输出

+--------+   
|expCol |
+--------+
|abc. abc|
|bcd. 123|
|efg.@/. | --the value here stays the same because after the period is not a letter/number
+--------+

我试过了:

SELECT REGEXP_REPLACE(expCol, '.', '. ') from expTable WHERE /*condition*/

正如预期的那样,包括最后一个值“efg.@/.”在内的所有内容期后有空位。我不知道在 WHERE 子句中放什么。

最佳答案

你可以试试这个。它搜索一个 . 后跟一个单词字符,并将其替换为一个点 .,然后是一个空格和匹配的字符。

select REGEXP_REPLACE(expCol, '\.(\w)','. \1') FROM ExpTable;

如果您只想替换第一个这样的匹配项,您可以指定它。

REGEXP_REPLACE(expCol, '\.(\w)','. \1',1,1) 

唯一需要注意的是,这将匹配数字、字母和下划线,如果您不想考虑 "_" ,请使用 [[:alnum:]] [a-zA-Z0-9] 代替 \w

Demo

关于sql - oracle sql regexp_replace,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49767757/

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