sql - 在 queryExecute() 中使用 REGXP_LIKE
问题描述
我正在寻找修改现有查询以使用 REGEXP_LIKE 但与我无法正确理解的某些语法相冲突。我们目前使用以下方法对 Oracle DB 进行 CF 查询:
result = QueryExecute("
SELECT paramOne, paramTwo FROM someTable WHERE fieldOne = :PUBLISHER
", {PUBLISHER=publisherId}, {datasource="someDB"});
哪个有效。但是,我想将基础查询修改为:
result = QueryExecute("
SELECT paramOne, paramTwo FROM someTable WHERE REGEXP_LIKE(fieldOne, '(^|,)(:PUBLISHER)($|,)', 'i')
", {PUBLISHER=publisherId}, {datasource="someDB"});
但它没有达到预期的效果。当我尝试调试时,我注意到了一些事情......
底层查询(不使用变量)有效并已在 Oracle SQL 中验证
如果我转到源代码并将 :PUBLISHER 替换为“硬编码”值,则事情会按预期工作。
我试过逃避':'但这不是答案。
我觉得有些东西我不理解将变量传递到 REGEX 表达式中queryExecute()
,所以如果有任何想法,我将不胜感激。
感谢您收到任何意见,菲尔
解决方案
SQL>
with t (fieldOne) as (
select 'abc, def' from dual union all
select 'def cba' from dual union all
select ':publisher' from dual
)
select * from t where REGEXP_LIKE(fieldOne, '(^|,)(:PUBLISHER)($|,)', 'i');
FIELDONE
----------
:publisher
SQL>
with t (fieldOne) as (
select 'abc, def' from dual union all
select 'def cba' from dual union all
select ':publisher' from dual
)
select * from t where REGEXP_LIKE(fieldOne, '(^|,)(' || :PUBLISHER || ')($|,)', 'i');
FIELDONE
----------
abc, def
推荐阅读
- mongodb - 如何正确对接平均堆栈应用程序?
- java - File.createNewFIle() 的 java.nio.file 等价物是什么
- vba - Excel 合并文档宏
- objective-c - 在运行时读取 plist 文件
- fonts - 如何使用 Freetype、Harfbuzz 和 Fontconfig 执行字形替换
- jmeter - Jmeter maven 插件:在 Maven 中指定线程数、循环、加速时间
- javascript - 如何设置 Tinymce Value 内容
- c++ - 发送错误:错误地址
- azure - 用于具有 azure 身份验证的私有 Web 服务器的 SSL 证书
- c# - 如何在内存流中获取word文件,将其存储在缓冲区中并以PDF格式返回?