sql server 转义符 单引号

SQL 的转义字符是:'(单引号),  char(39) 也可以代表单引号

例:select * from tbl where uyear='''06'

请注意其中红色背景的单引号,它即表示转义字符,如果我们省略,则整个语句会出错,转义字符不会输出,上例中 uyear 的实际条件值为 '06,而不是 ''06

为什么不能省略呢,假如我们省略,上句变成:select * from tbl where uyear=''06'

由于在 SQL 中单引号表示字符串的开始和结束符号,于是 SQL 解释器会认为语句中灰色背景的为字符串,其后的语句显然是个错误的语句,当然会报错,为了解决字符串的单引号问题,就出现了转义字符单。

 

-------------------------- 整理 by smilysoft------------------------------------------------------------------------------------------

如果修改的某个字段的值中包含单引号时如何处理?

如表A有name字段,想修改该字段的某个值为【O'neal 】该如何修改?

一般会用双单引号来转义用来存储带有单引号的内容,这里介绍另外一种转换方法 char(39) 也可以代表单引号。

一 update A set name='O''neal' where...

二 update A set name='O' + char(39) + 'neal' where.... 

上边2个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 + '%' +'''' END set @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 print(@SearchSql) exec(@SearchSql)

 SET QUOTED_IDENTIFIER OFF 是 SQL-92 设置语句,使 SQL Server 2000/2005 遵从 SQL-92 规则。 当 SET QUOTED_IDENTIFIER 为 ON 时,标识符可

以由双引号分隔,而文字必须由单引号分隔。当 SET QUOTED_IDENTIFIER 为 OFF 时,标识符不可加引号,且必须符合所有 Transact-SQL 标识符规则。

SQL-92 标准要求在对空值进行等于 (=) 或不等于 (<>) 比较时取值为 FALSE。当 SET ANSI_NULLS 为 ON 时,即使 column_name 中包含空值,使用

WHERE column_name = NULL 的 SELECT 语句仍返回零行。即使 column_name 中包含非空值,使用 WHERE column_name <> NULL 的 SELECT 语句仍会返

回零行。 当 SET ANSI_NULLS 为 OFF 时,等于 (=) 和不等于 (<>) 比较运算符不遵从 SQL-92 标准。使用 WHERE column_name = NULL 的 SELECT 语句

返回 column_name 中包含空值的行。使用 WHERE column_name <> NULL 的 SELECT 语句返回列中包含非空值的行。此外,使用

WHERE column_name <> XYZ_value 的 SELECT 语句返回所有不为 XYZ_value 也不为 NULL 的行。

一、搜索通配符字符的说明 可以搜索通配符字符。有两种方法可指定平常用作通配符的字符: 使用 ESCAPE 关键字定义转义符。在模式中,当转义符置于通配符之前时,该通配符就解释为普通字符。例如,要搜索在任意位置包含字符串
5% 的字符串,请使用: WHERE ColumnA LIKE '%5/%%' ESCAPE '/' 在上述 LIKE 子句中,前导和结尾百分号 (%) 解释为通配符,而斜杠 (/) 之后的百分号解释为字符 %。 在方括号 ([ ]) 中只包含通配符本身。要搜索破折号 (-) 而不是用它指定搜索范围,请将破折号指定为方括号内的第一个字符: WHERE ColumnA LIKE '9[-]5' 下表显示了括在方括号内的通配符的用法。 符号 含义 LIKE '5[%]' 5% LIKE '5%' 5 后跟 0 个或更多字符的字符串 LIKE '[_]n' _n LIKE '_n' an, in, on (and so on) LIKE '[a-cdf]' a, b, c, d, or f LIKE '[-acdf]' -, a, c, d, or f LIKE '[ [ ]' [ LIKE ']' ] 二、实例说明: 在表PersonalMember中查找strloginname字段中含有"["的记录。 可用三条语句: 1select strloginname,* from PersonalMember where strloginname like '%\[%' escape '\' 2、(说明"\"与"/"均可与escape关键字结合作为转义符) select strloginname,* from PersonalMember where strloginname like '%/[%' escape '/' 3select strloginname,* from dbo.PersonalMember where charindex('[',strloginname)>0 文章转载自网管之家:http://www.bitscn.com/plus/view.php?aid=97312
posted @ 2012-04-13 13:43  Ψぁ敏ウこ  阅读(4200)  评论(0编辑  收藏  举报