如何在列中插入正则表达式

时间:2018-01-18 17:39:17

标签: regex oracle insert expression multiple-columns

我想知道如何在 Oracle 表的表格列中插入正则表达式。

insert into rule_master(rule)
values('^[0-how #'ff#'9]+$') where rule_id='7'

...但我的错误语法接近错误的地方。我用单引号试了这个。请给我一个解决方案。

1 个答案:

答案 0 :(得分:3)

除了使用where的无效语法之外,您还可以将字符串中的need to escape the single quotes加倍:

  

文字中的单引号(')必须以转义字符开头。要在文字中表示单个引号,请输入两个单引号。

所以使用普通文本文字:

insert into rule_master(rule) values('^[0-how #''ff#''9]+$')
                                               ^^   ^^

或者您可以使用the alternative quoting mechanism语法,如果您可以识别永远不会出现在值中的 quote_delimiter 字符(或者至少不会在单引号之前) ;例如如果您知道@永远不会出现,您可以使用以下模式:

values(q'@<your actual value>@')

即:

insert into rule_master(rule) values(q'@^[0-how #'ff#'9]+$@')
                                     ^ ^                  ^

如果where部分应该同时填充该列,则语法更像是:

insert into rule_master(rule_id, rule)
values(7, q'@^[0-how #'ff#'9]+$@')

如果已存在具有该ID的行,则应使用update而不是insert

update rule_master
set rule = q'@^[0-how #'ff#'9]+$@'
where rule_id = 7

或者merge如果您不确定。