REGEXP_REPLACE解释

时间:2018-06-02 00:23:55

标签: sql regex

您好我可以知道以下查询的含义是什么?

it

2 个答案:

答案 0 :(得分:0)

第1部分

在解释函数函数调用的作用方面: 这是一个函数调用,用正则表达式(第二个参数)分析输入字符串'number',并替换字符串中与特定字符串匹配的任何部分。至于括号后的名称,我不确定,但函数is here

的文档

第2部分

很抱歉在这里的答案中写了一个问题,但我还没有回复评论(不够代表)

这个正则表达式有用吗?除非sql使用不同的语法,否则这似乎是一个非功能正则表达式。有一些危险信号,例如:

  1. 整个正则表达式用方括号括起来,表示一组字符,但似乎主要是表达式
  2. 单引号与字符之间有一个范围指示符(无效范围:如果匹配中需要短划线,则应使用'\'(反斜杠)进行转义)
  3. 一组方括号永不关闭
  4. 经过一些小调整后,这个正则表达式是有效的语法: ^'' ''\-\/0-9:-@A-Z''[''- az { - 〜]`,但与我能想到的任何内容都不匹配,重要的是要知道正在检查什么字符串/该程序的上下文是什么,以便识别正则表达式可能正在尝试什么做

答案 1 :(得分:0)

似乎它意味着用number替换列或变量xy中的所有ASCII控制字符。

  • []包含一类字符。该类中的任何字符都匹配。 [^]否定了这一点,因此所有字符都匹配,而不是在类中。

  • -是一个范围运算符,例如a-z表示从az的所有字符,例如abc...xyz

  • '中包含的字符之类的接缝应该被转义(第二个'是为了逃避字符串本身中的'。)至少这会有所帮助。 (但是对于没有找到具有regexp_replace()函数的DBMS(Postgres,Oracle,DB2,MariaDB,MySQL),我在文档中发现了一些表明这种转义机制的东西。它们都使用{{1}但是,也许我错过了什么?不幸的是,你没有标记你实际使用的DBMS!)

现在,如果您使用ASCII表,您将看到表达式中的范围构成从空格到\/的组中的所有可打印字符(将空间计为可打印)到09:等等。实际上,将其表示为@,空格为'' ''-~可能会更短。

鉴于否定,所有这些都不匹配。剩下的是从~NULUS。这些匹配并逐个被DEL替换。