Oracle的SQL语句中如何处理‘&’符号
在Oracle中,如果在sql中出现'&'符号,会被自动转义;
而被要求输入在&符号后跟随的字符串的值,例如:
update tablename set columnName='http://www.g.cn/cv2.jsp?spid=222&cid=333';
执行这个操作时,Oracle会提示
Enter value for cid:
原因是在Oracle中 & 符号是作为转义字符使用的。
解决方法:
用Oracle的字符串处理函数chr处理。chr(38)表示 &符号
改写:
update tablename set columnName='http://www.g.cn/cv2.jsp?spid=222'||chr(38)||'cid=333';
由此联想开去,在数据库中存入html的一些符号式,很可能都会出现这种情况,那么如法炮制即可,如果有些符号的编码不知道的,可以通过下面的方法来查询:
select ascii('&') from dual;
相关文档:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER PROCEDURE [dbo].[sp_GetRecordfromPage]
@TableName varchar(350), --表名
@Fields varchar(5000) = '*', --字段名(全部字段为*)
@OrderField varchar(5000), &nbs ......
这里使用的数据库和数据表分别来自Sql语句学习笔记(1)——创建数据库和Sql语句学习笔记(2)——创建数据表
use RetalDB
go
--插入数据到表tb_movie_type
insert tb_movie_type values(0,'普通片','Regular')
insert tb_movie_type values(1,'新片','NewRelease')
insert tb_movie_type values ......
1,一个完整的PL/SQL 语句由三个部分组成。
declare
声明部分,定义变量,数据类型,异常,局部子程序等。
&nb ......
--sqlserver 2000
SELECT 表名=case when a.colorder=1 then d.name else '' end,
--字段序号=a.colorder,
字段名=a.name,
--
标识=case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' end,
/**/
主键=case when exists(SELECT 1 from sysobjects where xtype='PK' and name
in ( ......