ORACLE 查询条件出现特殊字符(关键字):&_
SQL
select 1 from dual WHERE xxx IN ('AAA&SSS')
编译器提示

原因和解决方法
在Oracle SQL查询中,如果查询条件包含特殊字符如&,通常需要进行转义处理,以确保查询语句能被正确解析
&在Oracle中可能被视作替换变量的一部分,因此直接使用时可能导致查询出错
为了正常查询包含&的字符串,你可以使用CHR(38)来替换&,因为CHR(38)返回的就是&字符
1.转义的SQL
SELECT ASCII('&') FROM dual; SELECT CHR(38) FROM dual;
2.LIKE 使用关键字ESCAPE
-- ESCAPE '\' 指定 \ 作为转义字符,使得 \_ 被解释为实际的下划线字符,而不是通配符 SELECT 1 FROM DUAL WHERE 'ASD' LIKE '%\_A\_%' ESCAPE '\'
3.禁用变量替换
-- 在SQL*Plus/SQLcl中执行 SET DEFINE OFF; CREATE DATABASE LINK my_dblink CONNECT TO username IDENTIFIED BY "pwd&123#" USING 'tns_service_name';

浙公网安备 33010602011771号