Oracle 10G:PL/SQL正规表达式(正则表达式)手册

Oracle Database 10g 的一个新特性大大提高了您搜索和处理字符数据的能力。这个特性就是正规表达式,是一种用来描述文本模式的表示方法。很久以来它已在许多编程语言和大量 UNIX 实用工具中出现过了。

Oracle 的正规表达式的实施是以各种 SQL 函数和一个 WHERE 子句操作符的形式出现的。如果您不熟悉正规表达式,那么这篇文章可以让您了解一下这种新的极其强大然而表面上有点神秘的功能。已经对正规表达式很熟悉的读者可以了解如何在 Oracle SQL 语言的环境中应用这种功能。

什么是正规表达式?
  正规表达式由一个或多个字符型文字和/或元字符组成。在最简单的格式下,正规表达式仅由字符文字组成,如正规表达式 cat。它被读作字母 c,接着是字母 a 和 t,这种模式匹配 cat、location 和 catalog 之类的字符串。元字符提供算法来确定 Oracle 如何处理组成一个正规表达式的字符。当您了解了各种元字符的含义时,您将体会到正规表达式用于查找和替换特定的文本数据是非常强大的。

  验证数据、识别重复关键字的出现、检测不必要的空格,或分析字符串只是正规表达式的许多应用中的一部分。您可以用它们来验证电话号码、邮政编码、电子邮件地址、社会安全号码、IP 地址、文件名和路径名等的格式。此外,您可以查找如 HTML 标记、数字、日期之类的模式,或任意文本数据中符合任意模式的任何事物,并用其它的模式来替换它们。

用 Oracle Database 10g 使用正规表达式
  您可以使用最新引进的 Oracle SQL REGEXP_LIKE 操作符和 REGEXP_INSTR、REGEXP_SUBSTR 以及 REGEXP_REPLACE 函数来发挥正规表达式的作用。您将体会到这个新的功能如何对 LIKE 操作符和 INSTR、SUBSTR 和 REPLACE 函数进行了补充。实际上,它们类似于已有的操作符,但现在增加了强大的模式匹配功能。被搜索的数据可以是简单的字符串或是存储在数据库字符列中的大量文本。正规表达式让您能够以一种您以前从未想过的方式来搜索、替换和验证数据,并提供高度的灵活性。

正规表达式的基本例子
  在使用这个新功能之前,您需要了解一些元字符的含义。句号 (.) 匹配一个正规表达式中的任意字符(除了换行符)。例如,正规表达式 a.b 匹配的字符串中首先包含字母 a,接着是其它任意单个字符(除了换行符),再接着是字母 b。字符串 axb、xaybx 和 abba 都与之匹配,因为在字符串中隐藏了这种模式。如果您想要精确地匹配以 a 开头和以 b 结尾的一条三个字母的字符串,则您必须对正规表达式进行定位。脱字符号 (^) 元字符指示一行的开始,而美元符号 ($) 指示一行的结尾(参见表1:附表见第4页)。因此, 正规表达式 ^a.b$ 匹配字符串 aab、abb 或 axb。将这种方式与 LIKE 操作符提供的类似的模式匹配 a_b 相比较,其中 (_) 是单字符通配符。

  默认情况下,一个正规表达式中的一个单独的字符或字符列表只匹配一次。为了指示在一个正规表达式中多次出现的一个字符,您可以使用一个量词,它也被称为重复操作符。.如果您想要得到从字母 a 开始并以字母 b 结束的匹配模式,则您的正规表达式看起来像这样:^a.*b$。* 元字符重复前面的元字符 (.) 指示的匹配零次、一次或更多次。LIKE 操作符的等价的模式是 a%b,其中用百分号 (%) 来指示任意字符出现零次、一次或多次。

  表 2 给出了重复操作符的完整列表。注意它包含了特殊的重复选项,它们实现了比现有的 LIKE 通配符更大的灵活性。如果您用圆括号括住一个表达式,这将有效地创建一个可以重复一定次数的子表达式。例如,正规表达式 b(an)*a 匹配 ba、bana、banana、yourbananasplit 等。

  Oracle 的正规表达式实施支持 POSIX (可移植操作系统接口)字符类,参见表 3 中列出的内容。这意味着您要查找的字符类型可以非常特别。假设您要编写一条仅查找非字母字符的 LIKE 条件 — 作为结果的 WHERE 子句可能不经意就会变得非常复杂。

  POSIX 字符类必须包含在一个由方括号 ([]) 指示的字符列表中。例如,正规表达式 [[:lower:]] 匹配一个小写字母字符,而 [[:lower:]]{5} 匹配五个连续的小写字母字符。

  除 POSIX 字符类之外,您可以将单独的字符放在一个字符列表中。例如,正规表达式 ^ab[cd]ef$ 匹配字符串 abcef 和 abdef。必须选择 c 或 d。

  除脱字符 (^) 和连字符 (-) 之外,字符列表中的大多数元字符被认为是文字。正规表达式看起来很复杂,这是因为一些元字符具有随上下文环境而定的多重含义。^ 就是这样一种元字符。如果您用它作为一个字符列表的第一个字符,它代表一个字符列表的非。因此,[^[:digit:]] 查找包含了任意非数字字符的模式,而 ^[[:digit:]] 查找以数字开始的匹配模式。连字符 (-) 指示一个范围,正规表达式 [a-m] 匹配字母 a 到字母 m 之间的任意字母。但如果它是一个字符行中的第一个字符(如在 [-afg] 中),则它就代表连字符。

  之前的一个例子介绍了使用圆括号来创建一个子表达式;它们允许您通过输入更替元字符来输入可更替的选项,这些元字符由竖线 (|) 分开。

  例如,正规表达式 t(a|e|i)n 允许字母 t 和 n 之间的三种可能的字符更替。匹配模式包括如 tan、ten、tin 和 Pakistan 之类的字,但不包括 teen、mountain 或 tune。作为另一种选择,正规表达式 t(a|e|i)n 也可以表示为一个字符列表 t[aei]n。表 4 汇总了这些元字符。虽然存在更多的元字符,但这个简明的概述足够用来理解这篇文章使用的正规表达式。

REGEXP_LIKE 操作符
  REGEXP_LIKE 操作符向您介绍在 Oracle 数据库中使用时的正规表达式功能。表 5 列出了 REGEXP_LIKE 的语法。

  下面的 SQL 查询的 WHERE 子句显示了 REGEXP_LIKE 操作符,它在 ZIP 列中搜索满足正规表达式 [^[:digit:]] 的模式。它将检索 ZIPCODE 表中的那些 ZIP 列值包含了任意非数字字符的行。

SELECT zip FROM zipcode WHERE REGEXP_LIKE(zip, ‘[^[:digit:]]’)

ZIP
—–
ab123
123xy
007ab
abcxy

  这个正规表达式的例子仅由元字符组成,更具体来讲是被冒号和方括号分隔的 POSIX 字符类 digit。第二组方括号(如 [^[:digit:]] 中所示)包括了一个字符类列表。如前文所述,需要这样做是因为您只可以将 POSIX 字符类用于构建一个字符列表。

REGEXP_INSTR 函数
  这个函数返回一个模式的起始位置,因此它的功能非常类似于 INSTR 函数。新的 REGEXP_INSTR 函数的语法在表 6 中给出。这两个函数之间的主要区别是,REGEXP_INSTR 让您指定一种模式,而不是一个特定的搜索字符串;因而它提供了更多的功能。接下来的示例使用 REGEXP_INSTR 来返回字符串 Joe Smith, 10045 Berry Lane, San Joseph, CA 91234 中的五位邮政编码模式的起始位置。如果正规表达式被写为 [[:digit:]]{5},则您将得到门牌号的起始位置而不是邮政编码的,因为 10045 是第一次出现五个连续数字。因此,您必须将表达式定位到该行的末尾,正如 $ 元字符所示,该函数将显示邮政编码的起始位置,而不管门牌号的数字个数。

SELECT REGEXP_INSTR(‘Joe Smith, 10045 Berry Lane, San Joseph, CA 91234’,
‘[[:digit:]]{5}$’) AS rx_instr FROM dual

RX_INSTR
———-
45

编写更复杂的模式
  让我们在前一个例子的邮政编码模式上展开,以便包含一个可选的四位数字模式。您的模式现在可能看起来像这样:[[:digit:]]{5}(-[[:digit:]]{4})?$。如果您的源字符串以 5 位邮政编码或 5 位 + 4 位邮政编码的格式结束,则您将能够显示该模式的起始位置。

SELECT REGEXP_INSTR(‘Joe Smith, 10045 Berry Lane, San Joseph, CA 91234-1234’,
‘ [[:digit:]]{5}(-[[:digit:]]{4})?$’) AS starts_at FROM dual

STARTS_AT
———-
44

  在这个示例中,括弧里的子表达式 (-[[:digit:]]{4}) 将按 ? 重复操作符的指示重复零次或一次。此外,企图用传统的 SQL 函数来实现相同的结果甚至对 SQL 专家也是一个挑战。为了更好地说明这个正规表达式示例的不同组成部分,表 7 包含了一个对单个文字和元字符的描述。

REGEXP_SUBSTR 函数
  类似于 SUBSTR 函数的 REGEXP_SUBSTR 函数用来提取一个字符串的一部分。表 8 显示了这个新函数的语法。在下面的示例中,匹配模式 [^,]* 的字符串将被返回。该正规表达式搜索其后紧跟着空格的一个逗号;然后按 [^,]* 的指示搜索零个或更多个不是逗号的字符,最后查找另一个逗号。这种模式看起来有点像一个用逗号分隔的值字符串。

SELECT REGEXP_SUBSTR(‘first field, second field , third field’, ‘, [^,]*,’) FROM dual

REGEXP_SUBSTR(‘FIR
——————
, second field ,

REGEXP_REPLACE 函数
  让我们首先看一下传统的 REPLACE SQL 函数,它把一个字符串用另一个字符串来替换。假设您的数据在正文中有不必要的空格,您希望用单个空格来替换它们。利用 REPLACE 函数,您需要准确地列出您要替换多少个空格。然而,多余空格的数目在正文的各处可能不是相同的。下面的示例在 Joe 和 Smith 之间有三个空格。REPLACE 函数的参数指定要用一个空格来替换两个空格。在这种情况下,结果在原来的字符串的 Joe 和 Smith 之间留下了一个额外的空格。

SELECT REPLACE(‘Joe Smith’,’ ‘, ‘ ‘) AS replace FROM dual

达芬奇 达芬奇

达芬奇——你的AI创作大师

达芬奇 50 查看详情 达芬奇

REPLACE
———
Joe Smith

  REGEXP_REPLACE 函数把替换功能向前推进了一步,其语法在表 9 中列出。以下查询用单个空格替换了任意两个或更多的空格。( ) 子表达式包含了单个空格,它可以按 {2,} 的指示重复两次或更多次。
SELECT REGEXP_REPLACE(‘Joe Smith’, ‘( ){2,}’, ‘ ‘) AS RX_REPLACE FROM dual

RX_REPLACE
———-
Joe Smith

后向引用   正则表达式的一个有用的特性是能够存储子表达式供以后重用;这也被称为后向引用(在表 10 中对其进行了概述)。它允许复杂的替换功能,如在新的位置上交换模式或显示重复出现的单词或字母。子表达式的匹配部分保存在临时缓冲区中。缓冲区从左至右进行编号,并利用 digit 符号进行访问,其中 digit 是 1 到 9 之间的一个数字,它匹配第 digit 个子表达式,子表达式用一组圆括号来显示。

  接下来的例子显示了通过按编号引用各个子表达式将姓名 Ellen Hildi Smith 转变为 Smith, Ellen Hildi。

SELECT REGEXP_REPLACE(
‘Ellen Hildi Smith’,
‘(.*) (.*) (.*)’, ‘3, 1 2’)
FROM dual

REGEXP_REPLACE(‘EL
——————
Smith, Ellen Hildi

  该 SQL 语句显示了用圆括号括住的三个单独的子表达式。每一个单独的子表达式包含一个匹配元字符 (.),并紧跟着 * 元字符,表示任何字符(除换行符之外)都必须匹配零次或更多次。空格将各个子表达式分开,空格也必须匹配。圆括号创建获取值的子表达式,并且可以用 digit 来引用。第一个子表达式被赋值为 1 ,第二个 2,以此类推。这些后向引用被用在这个函数的最后一个参数 (3, 1 2) 中,这个函数有效地返回了替换子字符串,并按期望的格式来排列它们(包括逗号和空格)。表 11 详细说明了该正则表达式的各个组成部分。

  后向引用对替换、格式化和代替值非常有用,并且您可以用它们来查找相邻出现的值。接下来的例子显示了使用 REGEP_SUBSTR 函数来查找任意被空格隔开的重复出现的字母数字值。显示的结果给出了识别重复出现的单词 is 的子字符串。
SELECT REGEXP_SUBSTR(
‘The final test is is the implementation’,
‘([[:alnum:]]+)([[:space:]]+)1’) AS substr
FROM dual

SUBSTR
——
is is

匹配参数选项
  您可能已经注意到了正则表达式操作符和函数包含一个可选的匹配参数。这个参数控制是否区分大小写、换行符的匹配和保留多行输入。

正则表达式的实际应用
  您不仅可以在队列中使用正则表达式,还可以在使用 SQL 操作符或函数的任何地方(比如说在 PL/SQL 语言中)使用正则表达式。您可以编写利用正则表达式功能的触发器,以验证、生成或提取值。

  接下来的例子演示了您如何能够在一次列检查约束条件中应用 REGEXP_LIKE 操作符来进行数据验证。它在插入或更新时检验正确的社会保险号码格式。如 123-45-6789 和 123456789 之类格式的社会保险号码对于这种列约束条件是可接受的值。有效的数据必须以三个数字开始,紧跟着一个连字符,再加两个数字和一个连字符,最后又是四个数字。另一种表达式只允许 9 个连续的数字。竖线符号 (|) 将各个选项分开。

ALTER TABLE students
ADD CONSTRAINT stud_ssn_ck CHECK
(REGEXP_LIKE(ssn,
‘^([[:digit:]]{3}-[[:digit:]]{2}-[[:digit:]]{4}|[[:digit:]]{9})$’))

  由 ^ 和 $ 指示的开头或结尾的字符都是不可接受的。确保您的正则表达式没有分成多行或包含任何不必要的空格,除非您希望格式如此并相应地进行匹配。表 12 说明了该正则表达式示例的各个组成部分。

将正则表达式与现有的功能进行比较
  正则表达式有几个优点优于常见的 LIKE 操作符和 INSTR、SUBSTR 及 REPLACE 函数的。这些传统的 SQL 函数不便于进行模式匹配。只有 LIKE 操作符通过使用 % 和 _ 字符匹配,但 LIKE 不支持表达式的重复、复杂的更替、字符范围、字符列表和 POSIX 字符类等等。此外,新的正则表达式函数允许检测重复出现的单词和模式交换。这里的例子为您提供了正则表达式领域的一个概览,以及您如何能够在您的应用程序中使用它们。

实实在在地丰富您的工具包
  因为正则表达式有助于解决复杂的问题,所以它们是非常强大的。正则表达式的一些功能难于用传统的 SQL 函数来仿效。当您了解了这种稍显神秘的语言的基础构建程序块时,正则表达式将成为您的工具包的不可缺少的一部分(不仅在 SQL 环境下也在其它的编程语言环境下)。为了使您的各个模式正确,虽然尝试和错误有时是必须的,但正则表达式的简洁和强大是不容置疑的。
附表见下页:
表 1:定位元字符
元字符 说明
^ 使表达式定位至一行的开头
$ 使表达式定位至一行的末尾

表 2:量词或重复操作符 量词 说明
* 匹配 0 次或更多次
? 匹配 0 次或 1 次
+ 匹配 1 次或更多次
{m} 正好匹配 m 次
{m,} 至少匹配 m 次
{m, n} 至少匹配 m 次但不超过 n 次

表 3:预定义的 POSIX 字符类 字符类 说明
[:alpha:] 字母字符
[:lower:] 小写字母字符
[:upper:] 大写字母字符
[:digit:] 数字
[:alnum:] 字母数字字符
[:space:] 空白字符(禁止打印),如回车符、换行符、竖直制表符和换页符
[:punct:] 标点字符
[:cntrl:] 控制字符(禁止打印)
[:print:] 可打印字符

表 4:表达式的替换匹配和分组 元字符 说明
| 替换 分隔替换选项,通常与分组操作符 () 一起使用
( ) 分组 将子表达式分组为一个替换单元、量词单元或后向引用单元(参见“后向引用”部分)
[char] 字符列表 表示一个字符列表;一个字符列表中的大多数元字符(除字符类、^ 和 – 元字符之外)被理解为文字

表 5:REGEXP_LIKE 操作符 语法 说明
REGEXP_LIKE(source_string, pattern
[, match_parameter]) source_string 支持字符数据类型(CHAR、VARCHAR2、CLOB、NCHAR、NVARCHAR2 和 NCLOB,但不包括 LONG)。pattern 参数是正则表达式的另一个名称。match_parameter 允许可选的参数(如处理换行符、保留多行格式化以及提供对区分大小写的控制)。

表 6:REGEXP_INSTR 函数 语法 说明
REGEXP_INSTR(source_string, pattern
[, start_position
[, occurrence
[, return_option
[, match_parameter]]]]) 该函数查找 pattern ,并返回该模式的第一个位置。您可以随意指定您想要开始搜索的 start_position。 occurrence 参数默认为 1,除非您指定您要查找接下来出现的一个模式。return_option 的默认值为 0,它返回该模式的起始位置;值为 1 则返回符合匹配条件的下一个字符的起始位置。

表 7: 5 位数字加 4 位邮政编码表达式的说明 语法 说明
必须匹配的空白
[:digit:] POSIX 数字类
] 字符列表的结尾
{5} 字符列表正好重复出现 5 次
( 子表达式的开头
– 一个文字连字符,因为它不是一个字符列表内的范围元字符
[ 字符列表的开头
[:digit:] POSIX [:digit:]类
[ 字符列表的开头
] 字符列表的结尾
{4} 字符列表正好重复出现 4 次
) 结束圆括号,结束子表达式
? ? 量词匹配分组的子表达式 0 或 1 次,从而使得 4 位代码可选
$ 定位元字符,指示行尾

表 8:REGEXP_SUBSTR 函数 语法 说明
REGEXP_SUBSTR(source_string, pattern
[, position [, occurrence
[, match_parameter]]]) REGEXP_SUBSTR 函数返回匹配模式的子字符串。

表 9: REGEXP_REPLACE 函数 语法 说明
REGEXP_REPLACE(source_string, pattern
[, replace_string [, position
[,occurrence, [match_parameter]]]]) 该函数用一个指定的 replace_string 来替换匹配的模式,从而允许复杂的“搜索并替换”操作。

表 10:后向引用元字符 元字符 说明
digit 反斜线 紧跟着一个 1 到 9 之间的数字,反斜线匹配之前的用括号括起来的第 digit 个子表达式。
(注意:反斜线在正则表达式中有另一种意义,取决于上下文,它还可能表示 Escape 字符。

表 11:模式交换正则表达式的说明 正则表达式项目 说明
( 第一个子表达式的开头
. 匹配除换行符之外的任意单字符
* 重复操作符,匹配之前的 . 元字符 0 到 n 次
) 第一个子表达式的结尾;匹配结果在 1
中获取(在这个例子中,结果为 Ellen。)
必须存在的空白
( 第二个子表达式的开头
. 匹配除换行符之外的任意单个字符
* 重复操作符,匹配之前的 . 元字符 0 到 n 次
) 第二个子表达式的结尾;匹配结果在 2
中获取(在这个例子中,结果为 Hildi。)
空白
( 第三个子表达式的开头
. 匹配除换行符之外的任意单字符
* 重复操作符,匹配之前的 . 元字符 0 到 n 次
) 第三个子表达式的结尾;匹配结果在 3
中获取(在这个例子中,结果为 Smith。)

表 12:社会保险号码正则表达式的说明 正则表达式项目 说明
^ 行首字符(正则表达式在匹配之前不能有任何前导字符。)
( 开始子表达式并列出用 | 元字符分开的可替换选项
[ 字符列表的开头
[:digit:] POSIX 数字类
] 字符列表的结尾
{3} 字符列表正好重复出现 3 次
– 连字符
[ 字符列表的开头
[:digit:] POSIX 数字类
] 字符列表的结尾
{2} 字符列表正好重复出现 2 次
– 另一个连字符
[ 字符列表的开头
[:digit:] POSIX 数字类
] 字符列表的结尾
{4} 字符列表正好重复出现 4 次
| 替换元字符;结束第一个选项并开始下一个替换表达式
[ 字符列表的开头
[:digit:] POSIX 数字类
] 字符列表的结尾
{9} 字符列表正好重复出现 9 次
) 结束圆括号,结束用于替换的子表达式组
$ 定位元字符,指示行尾;没有额外的字符能够符合模式

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/434595.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月7日 15:32:54
下一篇 2025年11月7日 15:34:08

相关推荐

  • java怎么编译运行.html_java编译运行.html方法【教程】

    Java程序的编译运行与HTML无关,需使用JDK。1. 编写HelloWorld.java文件;2. 命令行执行javac HelloWorld.java生成.class文件;3. 执行java HelloWorld运行程序。注意:HTML是网页标记语言,不能直接运行Java代码,勿将二者混淆。确…

    2025年12月23日
    000
  • html文档中含有java怎么运行_html含java运行方法【教程】

    现代浏览器不支持Java Applet,推荐通过JavaScript调用Java后端服务或使用WebAssembly运行Java代码。 如果您在HTML文档中嵌入了Java代码,但发现无法正常运行,这通常是因为现代浏览器不再支持Java小程序(Applet)或相关插件。以下是几种实现HTML中Jav…

    2025年12月23日
    000
  • 怎么运行html的applet小程序_运行html applet小程序步骤【指南】

    现代浏览器已不再默认支持Java Applet,需通过安装JRE、启用插件、使用支持NPAPI的旧版浏览器(如Firefox 52.9 ESR)、调整Java安全级别至中,并将网站添加到例外站点列表方可运行。 如果您在尝试运行HTML中的Applet小程序时遇到问题,可能是因为现代浏览器已不再默认支…

    2025年12月23日
    000
  • 使用BeautifulSoup和JSON有效抓取动态加载的网页表格数据

    本教程旨在解决使用BeautifulSoup抓取网页表格时,因数据动态加载导致部分内容缺失的问题。通过分析网页背后的API请求,直接获取并解析JSON数据源,再结合BeautifulSoup提取的HTML结构信息,最终实现完整且准确的数据抓取。文章将提供详细的代码示例和实现步骤。 理解网页动态内容与…

    2025年12月23日
    400
  • 解决BeautifulSoup爬取网页表格中动态内容缺失问题

    本文旨在解决使用BeautifulSoup爬取网页表格时,因部分数据通过JavaScript动态加载导致内容缺失的问题。通过详细分析Oracle云定价页面的案例,教程将指导读者如何识别并获取隐藏在JSON API中的动态数据,并将其与BeautifulSoup解析的静态HTML内容有效整合,最终构建…

    2025年12月23日
    000
  • Java GUI在Web部署中的挑战与现代解决方案

    本文旨在澄清Java Web Start(JWS)在Web页面内运行GUI的常见误解,指出JWS用于本地应用启动而非嵌入式Web GUI。文章将探讨JWS的局限性及其被Oracle弃用的原因,介绍OpenWebStart作为其开源替代方案,并重点推荐Vaadin Flow作为使用纯Java构建真正W…

    2025年12月22日
    000
  • Java GUI Web部署策略与现代替代方案

    本文旨在澄清Java GUI应用在Web页面中直接运行的常见误区,特别是关于Java Web Start (JWS) 的作用与局限性。我们将探讨JWS的实际工作机制、其被Oracle废弃的原因,并介绍OpenWebStart作为现有JWS应用的替代方案。此外,文章将重点推荐Vaadin Flow等现…

    2025年12月22日
    300
  • HTML表单如何实现白名单功能?怎样只允许授权用户?

    要实现%ignore_a_1%的白名单功能并确保只有授权用户操作,核心答案是必须依赖后端服务器进行严格的身份认证、会话管理、授权检查和数据验证,前端仅能提供用户体验层面的初步提示而不能保障安全;具体而言,首先通过用户身份认证(如用户名/密码或oauth)确认用户身份,服务器创建会话并返回标识符,后续…

    2025年12月22日
    000
  • 表单中的ERP怎么连接?如何对接企业资源计划系统?

    将表单数据连接到erp系统的核心是打通数据流,确保信息能从前端无缝流入企业核心系统,主要通过api接口集成、中间件/ipaas、文件导入导出和rpa四种方式实现;其中api集成因其实时性高、安全性好、可扩展性强,成为现代系统的首选方案,尤其适用于支持开放api的erp系统;当业务涉及多系统复杂集成时…

    2025年12月22日
    100
  • HTML如何实现文本加密?怎么隐藏敏感内容?

    纯前端技术无法真正加密或安全隐藏敏感内容,因为html、css和javascript均在客户端运行,源代码和数据可被用户通过开发者工具轻易查看;2. 所谓“隐藏”如display: none、hidden属性或javascript移除dom,仅是视觉上的屏蔽,数据仍存在于页面中;3. 真正的安全必须…

    2025年12月22日
    000
  • 表单中的智能合约怎么集成?如何自动执行表单条款?

    要实现表单数据与智能合约的精准匹配及条款的自动执行,核心在于通过后端服务进行数据类型转换、多层校验并严格遵循abi规范调用合约;智能合约通过内置条件逻辑或借助chainlink keepers等自动化服务实现触发执行;需应对gas成本、安全风险、异步体验和预言机依赖等挑战,采用layer 2、元交易…

    2025年12月22日
    000
  • 想提升IT技能?哪些含金量高的认证值得考?

    it职业发展:高含金量认证助您成功 想在IT领域提升竞争力?选择合适的认证至关重要。本文推荐几项国内外认可度高的IT认证,助您在职业道路上更进一步。 热门认证推荐: 1. 高级软件设计师(软考高级): 国内IT领域含金量最高的认证之一。涵盖软件工程、项目管理及计算机基础知识。证明您在软件设计和开发方…

    2025年12月22日
    000
  • 解决node-oracledb Thin模式下不支持0x939密码验证器错误

    本文旨在解决使用node-oracledb在thin模式下连接oracle数据库时遇到的“密码验证器类型0x939不受支持”错误。该问题通常源于数据库使用了较旧的密码哈希算法。教程将详细介绍针对不同oracle数据库版本的解决方案,包括启用thick模式、调整数据库参数以及重置用户密码等,以确保no…

    2025年12月21日
    100
  • 数据持久化方案比较

    文件存储适合轻量级需求,实现简单但并发和查询能力弱;2. 关系型数据库保障一致性与复杂查询,适用于强一致性系统;3. NoSQL 数据库高扩展高性能,适合动态结构与海量数据;4. 对象存储用于海量非结构化文件,具备高持久性但不支持随机更新;5. 方案选择需综合数据类型、访问模式与规模,最合适组合优于…

    2025年12月21日
    000
  • 解决 node-oracledb 6.0 Thin 模式脚本结束延迟问题

    node-oracledb 6.0 Thin 模式下,若不显式关闭数据库连接,Node.js 脚本在执行完毕后会出现数秒的延迟才终止。这是因为 Thin 模式直接管理网络套接字,这些套接字会保持 Node.js 事件循环活跃,直到被垃圾回收器处理。为避免此延迟,务必通过 connection.clo…

    2025年12月20日
    000
  • 深入理解node-oracledb 6 Thin模式下的连接管理与脚本终止行为

    在使用node-oracledb 6的Thin模式时,若不显式关闭数据库连接,Node.js脚本可能出现意外的延迟终止。这是因为Thin模式下的内部套接字会被Node.js事件循环感知,从而阻止进程立即退出,直至连接被垃圾回收或显式关闭。本文将深入探讨这一机制,并强调在Thin模式下显式调用conn…

    2025年12月20日
    000
  • 如何在APEX自动完成文本字段中实现多条件代码触发(选择值或离开字段)

    针对APEX 22.2.4中自动完成文本字段的事件触发限制,本文提供了一种解决方案。通过结合“Change”和“Key Down”两种动态操作,并利用“Debounce”机制优化按键事件,开发者可以实现在用户选择列表值或离开字段时,以及在用户输入过程中按需触发自定义代码,从而提升应用交互的灵活性和用…

    2025年12月20日
    000
  • Oracle APEX:掌握通过JavaScript正确调用应用程序级进程的方法

    本教程详细阐述了在Oracle APEX中通过JavaScript动态调用应用程序级进程的正确方法。它澄清了apex.submit()与apex.server.process()之间的关键区别,指出前者仅用于页面提交,而后者才是执行命名服务器端进程的AJAX首选。文章提供了示例代码和配置指导,帮助开…

    2025年12月20日
    000
  • Oracle APEX中正确调用应用程序级进程:告别apex.submit的误区

    本文探讨Oracle APEX中从页面动态操作调用应用程序级进程的常见误区。明确指出apex.submit仅用于页面提交并设置请求值,而要真正触发应用程序级进程,应使用apex.server.process进行按需AJAX调用。文章将详细介绍apex.server.process的使用方法、参数配置…

    2025年12月20日
    000
  • Node.js中如何加密数据?

    Node.js中加密数据需选用合适算法并安全管理密钥。推荐使用AES-256-GCM进行对称加密,因其提供机密性与完整性;RSA配合OAEP填充用于非对称加密,适合密钥交换;密码存储应采用bcrypt等专用哈希算法,避免MD5、SHA1。密钥绝不可硬编码,应通过环境变量、KMS或HSM安全管理,并定…

    2025年12月20日
    000

发表回复

登录后才能评论
关注微信