sql 单引号使用应注意的问题

发布时间:2020-12-22编辑:脚本学堂
sql中可以用单引号括起一串字符串,但有时会在查询或更新时,碰到字段内容包含单引号的情况,此时应该如何处理呢?

sql语句中,单引号中间的为字符串,比如在SQL中定义一个字符串并赋值的,值要用两个单引号括起来,如下面的例子:

Declare @str Varchar(50)
Select @str = 'welcome to www.jb200.com'

问题总是随之而来,有时需要在SQL中的字符串插入单引号,此时要注意到,单引号还可以作为转义字符使用哦。
即两个连着的单引号在字符串中表示一个单引号,迷糊了有木有,不要怕,接着往下看。
例如,将I'm a student赋值给一个字符串变量可以这样来写:

Declare @str Varchar(50)
Select @str = 'I''m a student'

下面是一个字符串连接的例子。

Declare @strFieldName Varchar(255) Declare @strTableName Varchar(255) Declare @strFieldValue varchar(100) Select @strTableName = 'USERS' Select @strFieldName = 'UserName' Select @strFieldValue = 'jaffee' print @strFieldName print @strTableName print @strFieldValue declare @Str Varchar(300) select @Str = 'Select Count(['+@strFieldName+']) From ['+@strTableName+'] Where ['+@strFieldName+'] = '''+ @strFieldValue + '''' print @str

因为jafee是字符串类型,如果用

select @Str = 'Select Count(['+@strFieldName+']) From ['+@strTableName+'] Where ['+@strFieldName+'] = '+ @strFieldValue

执行后,会是这样的结果:

@str这个串的值是Select Count([UserName]) From [USERS] Where [UserName] = jaffee1900

修改为如下结构,才可以正常执行。

select @Str = 'Select Count(['+@strFieldName+']) From ['+@strTableName+'] Where ['+@strFieldName+'] = '''+ @strFieldValue + ''''

相当于如下的结构:

Select Count([UserName]) From [USERS] Where [UserName] = 'jaffee1900'

附:
sql查询含有单引号的字段:

select 字段列表 from 表名 where 字段名 like ’%’+char(39)+’%’