日期:2014-05-17  浏览次数:20569 次

请教一个关于引号的问题
各位大神~小弟不明白'select @temp=count(*) from student a,category b,student_semester_ships c,org d,classtb e,semester f
where  a.FKNurseryTypeID = b.PKCategoryID and d.PKOrgID='''+ convert(nvarchar(36),@OrgID) + ''''
为何这里要用三个''' 这个位置 d.PKOrgID='''+ convert(nvarchar(36),@OrgID) + '''

还望大神赐教~

------解决方案--------------------
转义字符,
------解决方案--------------------
一个单引号表示字符串的定界,字符串为了引用单引号,而且能够分辨出定界符,用两个单引放在一起表示一个单引号
------解决方案--------------------
引号是特殊字符,如果在字符串内部包含了引号,那么必须要写2次,来表示这个是个普通的字符,不是特殊字符
------解决方案--------------------

if object_id('table1') is not null
drop table table1
go
create table table1(
ward_no int

insert into table1
select 10206
go
declare @sql nvarchar(20)
--自己改变,看看结果
set @sql = '10206'
--选择消息选项卡,看看sql语句,你就明白
print('select * from table1 where ward_no = '+@sql+ ' and 1=1')

print('select * from table1 where ward_no = ''+@sql+ '' and 1=1')

print('select * from table1 where ward_no = '''+@sql+ ''' and 1=1')
--执行
--exec('select * from table1 where ward_no = '''+@sql+ ''' and 1=1')