我想知道如何在 Oracle 表的表格列中插入正则表达式。
insert into rule_master(rule)
values('^[0-how #'ff#'9]+$') where rule_id='7'
...但我的错误语法接近错误的地方。我用单引号试了这个。请给我一个解决方案。
答案 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
如果您不确定。