您当前的位置:首页 > 互联网教程

如何使用oracle正则表达式截取字符串

发布时间:2025-05-20 10:26:29    发布人:远客网络

如何使用oracle正则表达式截取字符串

一、如何使用oracle正则表达式截取字符串

1、以前做过,用专业的话叫做数据清洗。这样的数据往往是不同人员/在不同时间录入的。

2、第一步、去掉非关键字,保留关键字。

3、拿“中国工商银行xxx支行”来说录入的名称可能存在很多情况比如“工商银行xxx支行”/“工行xxx支行”等,

4、针对这些情况我们要排除非关键字对数据的干扰,以”中国“开始的去掉”中国“二字,以”支行“结尾的去掉”支行“二字。

5、第二步、同义词转换。比如”工商银行“=”工行“,”农业银行“=”农行“等。

6、第三步、数据标准化。将不标准的名称更改成标准的名称。

7、在清洗过程中,可以一边做一边,使用group by语句统计名称的个数,观察数据。

8、这个是一个体力活,其中还可能存在错别字等情况,反正很烦。

二、oracle中截取一个字符串中的数字

1、在Oracle中,处理字符串中的数字通常依赖于正则表达式函数REGEXP_SUBSTR。这个函数在版本较高的Oracle中表现出色。它涉及到的参数有五个,每个都有特定的用途。\n\n首先,你需要提供一个输入字符串,这是第一个参数,它是我们要从中提取数字的原始文本。接下来是正则表达式,第二个参数,它定义了模式,如在这里'[0-9]+',表示匹配任何连续的数字字符。\n\n第三个参数是匹配的起始位置,虽然默认为1,但如果需要从字符串的特定位置开始,你可以自定义这个值。第四个参数则是指定匹配组,这对于处理复杂的模式非常重要,但通常默认为1。\n\n最后,第五个参数决定了匹配的规则:\n-'i'表示大小写不敏感,数字'1'和'1'在这种模式下会被视为相同。\n-'c'则表示大小写敏感,'1'和'1'在这种情况下是不同的。\n-'n'使点号'.'不匹配换行符,这对于处理文本中的数字尤其重要。\n-'m'开启多行模式,允许正则表达式跨多行查找。\n-'x'开启扩展模式,忽略正则表达式中的空白字符,使得模式更易于阅读。\n\n举个例子,使用SQL查询如下:

2、REGEXP_SUBSTR(a,'[0-9]+')

3、REGEXP_LIKE(a,'[0-9]+');

4、这段代码会从名为'test_reg_substr'的表中的'a'列中提取出所有的数字。这个函数在处理Oracle中的字符串操作时,为精确截取和提取数字提供了强大而灵活的工具。

三、oracle中截取一个字符串中的数字怎么做

如果Oracle版本不是太低的话,使用正则表达式函数 REGEXP_SUBSTR处理。\x0d\x0a\x0d\x0a5个参数\x0d\x0a第一个是输入的字符串\x0d\x0a第二个是正则表达式\x0d\x0a第三个是标识从第几个字符开始正则表达式匹配。(默认为1)\x0d\x0a第四个是标识第几个匹配组。(默认为1)\x0d\x0a第五个是是取值范围:\x0d\x0ai:大小写不敏感;\x0d\x0ac:大小写敏感;\x0d\x0an:点号.不匹配换行符号;\x0d\x0am:多行模式;\x0d\x0ax:扩展模式,忽略正则表达式中的空白字符。\x0d\x0a\x0d\x0aSQL> SELECT\x0d\x0a 2 REGEXP_SUBSTR(a,'[0-9]+')\x0d\x0a 3 FROM\x0d\x0a 4 test_reg_substr\x0d\x0a 5 WHERE\x0d\x0a 6 REGEXP_LIKE(a,'[0-9]+');