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 @   Robot-Blog  阅读(256)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示