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';

 

posted @ 2024-08-07 11:52  Robot-Blog  阅读(676)  评论(0)    收藏  举报