甲骨文 sql regexp_replace
oracle sql regexp_replace
我有一个 table 具有这样的值。
ExpTable
+--------+
|expCol |
+--------+
|abc.abc |
|bcd.123 |
|efg.@/. |
+--------+
而我想要的是,当句点后面的字符是字母或数字时,输出将在点后添加一个 space,如下所示:
预期输出
+--------+
|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.@/.' 在内的所有内容在句点后都有一个 space。我不知道在 WHERE 子句中放什么。
SELECT REGEXP_REPLACE(expCol, '\.([a-zA-Z0-9])', '. ') AS expCol FROM expTable
或
SELECT REGEXP_REPLACE(expCol, '[.]([a-zA-Z0-9])', '. ') AS expCol FROM expTable
输出
EXPCOL
abc. abc
bcd. 123
efg.@/.
现场演示
你可以试试这个。
.
是正则表达式中的关键字,因此您需要在其前面加上 \
SELECT REGEXP_REPLACE(expCol, '\.(\w)', '. ') from T
sqlfiddle :http://sqlfiddle.com/#!4/94ffec/1
你可以试试这个。它搜索 .
后跟一个单词字符,并将其替换为点 .
,然后是 space 和匹配的字符。
select REGEXP_REPLACE(expCol, '\.(\w)','. ') FROM ExpTable;
如果您只想替换第一个这样的事件,您可以指定它。
REGEXP_REPLACE(expCol, '\.(\w)','. ',1,1)
唯一需要注意的是,这也会匹配数字、字母和下划线,如果您不想考虑 "_"
,请使用 [[:alnum:]]
或 [a-zA-Z0-9]
共 \w
我有一个 table 具有这样的值。
ExpTable
+--------+
|expCol |
+--------+
|abc.abc |
|bcd.123 |
|efg.@/. |
+--------+
而我想要的是,当句点后面的字符是字母或数字时,输出将在点后添加一个 space,如下所示:
预期输出
+--------+
|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.@/.' 在内的所有内容在句点后都有一个 space。我不知道在 WHERE 子句中放什么。
SELECT REGEXP_REPLACE(expCol, '\.([a-zA-Z0-9])', '. ') AS expCol FROM expTable
或
SELECT REGEXP_REPLACE(expCol, '[.]([a-zA-Z0-9])', '. ') AS expCol FROM expTable
输出
EXPCOL
abc. abc
bcd. 123
efg.@/.
现场演示
你可以试试这个。
.
是正则表达式中的关键字,因此您需要在其前面加上 \
SELECT REGEXP_REPLACE(expCol, '\.(\w)', '. ') from T
sqlfiddle :http://sqlfiddle.com/#!4/94ffec/1
你可以试试这个。它搜索 .
后跟一个单词字符,并将其替换为点 .
,然后是 space 和匹配的字符。
select REGEXP_REPLACE(expCol, '\.(\w)','. ') FROM ExpTable;
如果您只想替换第一个这样的事件,您可以指定它。
REGEXP_REPLACE(expCol, '\.(\w)','. ',1,1)
唯一需要注意的是,这也会匹配数字、字母和下划线,如果您不想考虑 "_"
,请使用 [[:alnum:]]
或 [a-zA-Z0-9]
共 \w