sqlserver 转义符单引号
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''
⼆ update A set name='O' + char(39) + '
上边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 @SearchS SET QUOTED_IDENTIFIER OFF 是 SQL-9
2 设置语句,使 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 语句仍会返请输入长度介于05之间的字符串
回零⾏。当 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字段中含有"["的记录。
可⽤三条语句:
1、
select strloginname,* from PersonalMember where strloginname like '%\[%' escape '\'
2、(说明"\"与"/"均可与escape关键字结合作为转义符)
select strloginname,* from PersonalMember where strloginname like '%/[%' escape '/'
3、
select strloginname,* from dbo.PersonalMember where charindex('[',strloginname)>0
⽂章转载⾃⽹管之家:www.bitscn/plus/view.php?aid=97312
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论