Oracle更新表字段或者查询表字段时内容中含有特殊字符&的解决方法
现象
解决方式
1. 字符串拼接
UPDATE T_MENU_INFO SET menu_code='/ABeptjk/gakfzx/abczscsppz', menu_name='平台监控-客服中心-操作手册'||'&'||'视频配置' WHERE menu_id='40019';
2. set define off;
-- set define off; 在(PL/SQL的)SQL窗口中执行是无效的, 需要在(PL/SQL的)命令窗口中执行
SQL> set define off; SQL> select * from T_MENU_INFO t where t.menu_name like '%平台监控-客服中心-操作手册&视频配置%';
3. chr(38)
-- 在SQL语句中将'&'替换成chr(38),因为chr(38)是'&'的ASCII码 SQL> Select 'Tom' || chr(38) || 'Jerry' from dual;
( 转 ) oracle 特殊符号 oracle通配符,运算符的使用 用于where比较条件的有: 等于:=、<、<=、>、>=、<> 包含:in、not in exists、not exists 范围:between...and、not between....and 匹配测试:like、not like Null测试:is null、is not null 布尔链接:and、or、not 通配符: 在where子句中,通配符可与like条件一起使用。在Oracle中: %(百分号): 用来表示任意数量的字符,或者可能根本没有字符。 _(下划线): 表示确切的未知字符。 ?(问号): 用来表示确切的未知字符。 #(井号): 用来表示确切的阿拉伯数字,0到9。 [a-d](方括号):用来表示字符范围,在这里是从a到d。 单引号('):在Oracle中,应该只使用单引号将文本和字符和日期括起来,不能使用引号(包括单双引号)将数字括起来。 双引号("):在Oracle中,单双引号含义不同。双引号被用来将包含特定字符或者空格的列别名括起来。双引号还被用来将文本放入日期格式。 撇号('):在Oracle中,撇号也可以写成彼此相邻的两个单引号。为了在供应商名字中间查找所有带撇号的供应商名字,可以这样编写代码: select * from l_suppliers where supplier_name like '%''%' &符号:在Oracle中,&符号常用来指出一个变量。例如,&fox是一个变量,稍微有点不同的一种&& fox。每当&fox出现在Oracle脚本中时,都会要求您为它提供一个值。而使用&&fox,您只需要在& &fox第一次出现时为它提供变量值。如果想将&符号作为普通的符号使用,则应该关闭这个特性。要想关闭这个特性,可以运行以下的命令: set define off ,这是一个SQLplus命令,不是一个SQL命令。SQLplus设置了SQL在Oracle中运行的环境。 双竖线(||):Oracle使用双竖线表示字符串连接函数。 星号(*):select *意味着选择所有的列,count(*)意味着计算所有的行,表示通配符时,表示0个或任意多个字符。 正斜杠(/):在Oracle中,用来终止SQL语句。更准确的说,是表示了“运行现在位于缓冲区的SQL代码”。正斜杠也用作分隔项。 多行注释:/*......*/。 不等于:有多种表达方式:!=、^=、<>、not xxx=yyy、not(xxx=yyy)