Transact-SQL对引号的处理
做一个模糊查找的存储过程
-- 第一种
alter proc selectPerson @name varchar ( 10) --@number int AS declare @sql varchar( 2000 ) set @sql = 'select * from test.dbo.TZ where (Z_name like ''%' +@name + '%'' OR '''+ @name+ '''='''')' print @sql exec (@sql ) --执行 selectPerson 'd' --因为SQL中根据两边引号识别字符串,所以先去掉@sql两边引号 --结果: select * from test .dbo . TZ where (Z_name like '' % (参数) % '' OR '' (参数) ''= '''' ) --再次去掉两边引号: select * from test .dbo . TZ where (Z_name like ' % (参数) % ' OR ' (参数) '= '' --这是PRINT的结果,即在数据库中解析为: select * from test .dbo . TZ where (Z_name like '%d%' OR 'd'= '' )
简单记为在SQL中 用两边的引号标示字符串,在这个字符串中要用两个引号 来表示 一个引号
-- 第二种
alter proc selectPerson @name varchar ( 10) --@number int AS select * from TZ where Z_name like '%' + @name+ '%'