SELECT person_no sub_sys_individual_id,
nm_e,
nm_a,
nvl(sex, -1) sex,
nvl(prs_nat, -999) prs_nat,
person_no,
'NA' prog_where_not_allowed,
'NA' udb_no,
person_tp,
pass_no
FROM ban_inq_tab
WHERE contains (nm_e ,'xxstart JUHETI BT MEMED ASMANI%') >0
AND (trans_flag IS NULL OR trans_flag = 'C');
请帮助我解决此问题并获取解析器语法错误
答案 0 :(得分:0)
错误导致BT,这是一个保留字。该解决方案在Oracle Community forum中描述。
答案 1 :(得分:0)
你必须逃避BT特殊字(但你可以逃脱整个字符串)。
SELECT person_no sub_sys_individual_id,
nm_e,
nm_a,
nvl(sex, -1) sex,
nvl(prs_nat, -999) prs_nat,
person_no,
'NA' prog_where_not_allowed,
'NA' udb_no,
person_tp,
pass_no
FROM ban_inq_tab
WHERE contains (nm_e ,'{xxstart JUHETI BT MEMED ASMANI}%') >0
AND (trans_flag IS NULL OR trans_flag = 'C');
答案 2 :(得分:0)
仅供参考,如果你有一个存储过程的输入参数,那么你也会得到这个错误(我在Oracle 12.2上),这个参数将作为一个包含谓词的查询作为NVARCHAR2。 因此,如果您将存储过程中的params作为NVARCHAR2输入并且该参数的目的地是包含谓词中的查询,则将其更改为VARCHAR(或者可能是CLOB),它将不再抛出此错误。