在存储过程中,密码中有’(单引号),第一反应使用转义字符。敲上/(反斜杠),失败告终; 网络一下如下结果,SQL 的转义字符是:'(单引号),所以在密码中写’’(两个单引号),表示一个单引号。C++ 的转义字符是:\SQL 的转义字符是:'(单引号)例:select * from tbl where uyear='''06'请注意其中红色背景的单引号,它即表示转义字符,如果我们省略,则整个语句会出错,转义字符不会输出,上例中 uyear 的实际条件值为 '06,而不是 ''06为什么不能省略呢,假如我们省略,上句变成:select * from tbl where uyear=''06'由于在 SQL 中单引号表示字符串的开始和结束符号,于是 SQL 解释器会认为语句中灰色背景的为字符串,其后的语句显然是个错误的语句,当然会报错,为了解决字符串的单引号问题,就出现了转义字符单。
2. sql server中sql语句中单引号怎么转义
sql server有两个转义符: ' 默认情况下, '是字符串的边界符, 如果在字符串中包含', 则必须使用两个', 第1个'就是转义符 另一个转义符是" 当SET QUOTED_IDENTIFIER OFF时, "是字符串边界符, 字符串中的"必须用两个"表示。 vb: "" <= " sql server 2000: ''' <= 'eg:declare @SearchType nvarchar(50) declare @SearchString nvarchar(255) declare @SearchKey nvarchar(50) declare @SearchSql nvarchar(2000) set @SearchType = '2' set @SearchKey = 'd' set @SearchString = CASE @SearchType when '1' then '1 = 1' when '2' then 'p.ProjectName like ''' + '%' + @searchkey + '%' + '''' when '3' then 'p.ProjectCity like ''' + '%'+ @searchkey + '%' +'''' when '4' then 'c.CateName like ''' + '%' + @searchkey + '%' + '''' when '4' then 'p.ProjectManager like ''' + '%' + @searchkey + '%' +''''ENDset @SearchSql = N' SELECT p.*,datename(year,ProjectPostTime)+ ' + '''-''' + ' + datename(month,ProjectPostTime)+ '+ '''-''' + ' + datename(day,ProjectPostTime)' + ' as PostTime, m.EmpName,c.CateName FROM proProject As p ,mrBaseInf As m ,proCate c WHERE p.EmpID = m.EmpID and p.CateID = c.CateID and ' + @SearchString
3. sql需要转义的字符有哪些
特殊转义:单引号 -- 用2个单引号''
两种比较常见的方式
(1)用中括号[]转义
WHERE ColumnA LIKE 'aaa[_]bbb' ---
(2)用关键字ESCAPE 转义
WHERE ColumnA LIKE '%aaa/%bbb%' ESCAPE '/'
注:
1)方式2不如1方便,适用面也窄小,清晰度也差。
2)方式0在使用动态SQL,尤其是“嵌套 + 代码生成”的高级应用中,很容易出错
4. SQL语句中转义字符怎么写
0、特殊转义:单引号
--
用2个单引号''
两种比较常见的方式
1、用中括号[]转义
WHERE
ColumnA
LIKE
'aaa[_]bbb'
---
2、用关键字ESCAPE
转义
WHERE
ColumnA
LIKE
'%aaa/%bbb%'
ESCAPE
'/'
注:
A)方式2不如1方便,适用面也窄小,清晰度也差。
B)方式0在使用动态SQL,尤其是“嵌套
+
代码生成”的高级应用中,很容易出错。
5. SQL语句中转义字符怎么写
两种比较常见的方式 :1.用中括号[ ]转义。 2.用关键字ESCAPE 转义。
6. sql语句中如何插入转义字符
只要在插入库之前作处理就可以了。利用replace函数把单引号替换为其它字符,如str.replace("'","*");其中str是你加密后的字符串!
7. SQL语句like子句中的转义符(解决like搜索%搜索到全部内容)
SQL LIKE里查询有下划线'_'或是'%'等值的记录,直接写成like 'XXX_XX',则会把'_'当成是like的通配符。
例如搜索 select * from user_all_tables where table_name like '%%%' 会将表中所有数据检索出来
Android SQL中暂时发现''%''为通配符
SQL里提供了 escape子句来处理这种情况,escape可以指定like中使用的转义符是什么,而在转义符后的字符将被当成原始字符,这和C里的'\'很像,但是escape要求自定义一个转义符,而不是指定了'\’字符。如:
select * from user_all_tables where table_name like 'YW__%' escape '_'
含义是查出当前用户表下所有以'YW_'开头的表,其中第一个'_'是转义符,第二个是被转义的字符,等效可以写成:
select * from user_all_tables where table_name like 'YW\_%' escape '\'
这里 如果直接搜索通配符例如设置 escape '_' 直接搜索 _ SQL语句为: select * from user_all_tables where table_name like '%_%' 这时会将 含%内容全部搜索出来 ,这里现行解决方案为两条SQL语句
String.contains()判断搜索内容是否含有'%'
若含有则使用 select * from user_all_tables where table_name like '%%%' escape '_'
不含则使用 select * from user_all_tables where table_name like '%%%'
原文链接
8. pl/sql有没有查询数据存在转义字符
在处理MySQL和GET、POST的数据时,常常要对数据的引号进行转义操作。
PHP中有三个设置可以实现自动对’(单引号),”(双引号),\(反斜线)和 NULL 字符转转。
php称之为魔术引号,这三项设置分别是
magic_quotes_gpc
影响到 HTTP 请求数据(GET,POST 和 COOKIE)。不能在运行时改变。在 PHP 中默认值为 on。
这个开启时,通过GET,POST,COOKIE传递的数据会自动被转义。
如 test.php?id=abc'de"f
echo $_GET['id']; # 会得到 abc\'de\"f
magic_quotes_gpc=On; 这个开启了,对写入数据库是没有影响的,比如 上面的$_GET['id'] 写到数据库里面,依然是 abc'de"f ,
相反,如果magic_quotes_gpc=Off; 那么字符中要带有引号(不管单引号还是双引号) ,直接写入mysql都会直接变成空白
但是,如果你将它写入文档,而非mysql。那么它将是 abc\'de\"f
magic_quotes_runtime
如果打开的话,大部份从外部来源取得数据并返回的函数,包括从数据库和文本文件,所返回的数据都会被反斜线转义。该选项可在运行的时改变,在 PHP 中的默认值为 off。
magic_quotes_sybase
如果打开的话,将会使用单引号对单引号进行转义而非反斜线。此选项会完全覆盖 magic_quotes_gpc。如果同时打开两个选项的话,单引号将会被转义成 ”。而双引号、反斜线 和 NULL 字符将不会进行转义。
我表单内容本来是:<img alt=”" width=”400″ height=”300″ src=”/Upfiles/201105/images/1306657040.jpg” />
<img alt=\”\” width=\”400\” height=\”300\” src=\”/Upfiles/201105/images/1306657040.jpg\” />
对策一:修改php.ini文件(修改php.ini这个方法就不说了,大家可以google下)
对策二:把转义的给取消了
第一步:找到你提交的数据比如$_POST['content'],将其改成$content=stripslashes($_POST['content']);
第二步:以后在使用$POST['content']的地方都换成$content
第三步:提交到数据库,数据库储存还是正常的:<img alt=”" width=”400″ height=”300″ src=”/Upfiles/201105/images/1306657040.jpg” />读出来又成了
<img alt=\”\” width=\”400\” height=\”300\” src=\”/Upfiles/201105/images/1306657040.jpg\” />(这个应该知道怎么解决了吧?要不我再罗嗦下吧)
第四步:将数据库读取的内容再用stripslashes()过滤一下。
stripslashes() 这个函数 ,删除由addslashes()函数添加的反斜杠。用于清理从数据库或 HTML 表单中取回的数据
(
PHP页面中如果不希望出现以下情况:
单引号被转义为 \'
双引号被转义为 \"
那么可以进行如下设置以防止:
在php.ini中设置:magic_quotes_gpc = Off)
总结如下:
1. 对于magic_quotes_gpc=on的情况,
我们可以不对输入和输出数据库的字符串数据作
addslashes()和stripslashes()的操作,数据也会正常显示。
如果此时你对输入的数据作了addslashes()处理,
那么在输出的时候就必须使用stripslashes()去掉多余的反斜杠。
2. 对于magic_quotes_gpc=off 的情况
必须使用addslashes()对输入数据进行处理,但并不需要使用stripslashes()格式化输出
因为addslashes()并未将反斜杠一起写入数据库,只是帮助mysql完成了sql语句的执行。
9. mybatis sql转义符号怎么写
1、在xml的sql语句中,不能直接用大于号、小于号要用转义字符
如果用小于号会报错误如下:
org.apache.ibatis.builder.BuilderException:
Error
creating
document
instance.
Cause:
org.xml.sax.SAXParseException:
The
content
of
elements
must
consist
of
well-formed
character
data
or
markup.
转义字符
2、使用
<![CDATA[
]]>标记的sql语句中的<where><if>等标签不会被解析