sql - 在 Oracle 函数中使用变量
问题描述
我有一个变量,想在模糊函数内的查询中使用,但考虑到 var,它给了我一些语法错误或错误结果。
ORA-20000:Oracle 文本错误:
DRG-50901:第 1 行第 21 列 29902 上的文本查询解析器语法错误。00000
-“执行 ODCIIndexStart() 例程时出错”
当我用一些静态字符串替换模糊函数中的 my_var 变量时,它工作正常,但使用变量它给了我这个错误。
我的查询如下:
DEFINE my_var = 'Bhularam';
SELECT a.EXTERNALID_ENC,
a.EXTERNALID,
a.TELNUMBER,
a.TELAREACODE,
a.DQ_ENGLISH_NAME,
a.DQ_ARABIC_NAME,
a.NAMEFIELD_1,
a.USAGETYPE,
a.MANUAL_UPDATE_FLAG,
a.RULE_UPDATE_FLAG,
a.BUSINESS_UPDATE_FLAG,
a.EXCEL_UPDATE_FLAG
FROM (
SELECT * FROM (
SELECT dqlist.*,
score(1) AS rank
FROM dq_list_hash_full dqlist
WHERE contains(dqlist.dq_english_name
,'definescore(fuzzy(my_var, 1, 6, weight),relevance)',1) > 0
UNION
SELECT
dqlist.*,
score(1) AS rank
FROM
dq_list_hash_full dqlist
WHERE
contains(dqlist.dq_english_name,'!Bhularam',1) > 0
)
ORDER BY
rank DESC
) a
我知道这真的很愚蠢,但我无法理解它,可能我是甲骨文的新手。请帮帮我。
解决方案
如果使用 sqlplus,请验证使用什么前缀字符来标识替换变量。默认设置为“&”。
sqlplus > show define
define "&" (hex 26)
尝试在查询中使用替换变量,例如
sqlplus > define my_var='hello world!'
sqlplus > select '&my_var' from dual;
old 1: select '&my_var' from dual
new 1: select 'hello world!' from dual
'HELLOWORLD!'
--------------------------------
hello world!
对于您的查询尝试(假设定义设置为“&”):
'definescore(fuzzy(&my_var, 1, 6, weight),relevance)',1)
推荐阅读
- fortran - JNA Fortran 性能调优
- c# - 使用热键/键盘快捷键打开和关闭第二个表单
- python - Surface.fill() 在我的 pygame 程序中不起作用,即使它是 (0, 0, 255) 并且 .fill() 函数在主循环内
- c# - 从 IConfiguration 中的其他 appsetting 文件读取问题
- rxjs5 - 混淆使用 Observable.switch
- python-3.x - Python:在 Windows 中获取进程的 PID
- ios - 选择密码自动填充建议时关闭键盘
- sql-server - 你们能指出我在哪里做错了错误消息102,级别15,状态1,第1行'20200427151140'附近的语法不正确
- tableau-api - 动态颜色格式值 - Tableau
- sharepoint - 删除 Carousal 中的空格 - SharePoint Online 现代 Webpart