Transact-SQL对引号的处理

2014-11-24 10:16:28 · 作者: · 浏览: 0
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+ '%'