sqlserver
创建一个临时表,用于演示sqlserver语法中的特殊字符转义IF OBJECT_ID('tempdb..#tblSpecial') IS NOT NULL DROP TABLE #tblSpecial; CREATE TABLE #tblSpecial( Col1 varchar(50), Col2 varchar(200) );
往临时表中插入一行测试数据,其中Col2列中含有一个特殊字符:百分号。从执行结果来看,在插入的时候百分号不需要转义insert into #tblSpecial(Col1, Col2) values('Code1', '第%列');
往临时表中插入一行测试数据,其中Col2列中含有一个特殊字符:单引号。刚写完单引号,就可以看到sql语句其实算报错了,因为在sql中的字符串就是使用单引号包起来的insert into #tblSpecial(Col1, Col2) values('Code10', '第'列');
那么,如果非要往临时表中,插入一个单引号,该如何转义呢。其实,使用两个单引号,就能表示一个字符的单引号了insert into #tblSpecial(Col1, Col2) values('Code10', '第''列');
往临时表中插入一行测试数据,其中Col2列中含有一个特殊字符:下划线。从执行结果来看,在插入的时候下划线不需要转义insert into #tblSpecial(Col1, Col2) values('Code100', '第_列');
如果要查询临时表中Col2列含有百分号的结果,该怎么查询呢?因为,模糊查询需要两个百分号,那么,要查找的百分号使用中括号包起来即可select * from #tblSpecial where Col2 like '%[%]%'
如果要查询临时表中Col2列含有下划线、单引号的结果,该怎么查询呢?由于在sqlserver中,下划线也是通配符,表示任何一个字符,所以,同样需要使用中括号包起来。至于单引号,仍然是两个连起来的单引号,表示一个单引号即可select * from #tblSpecial where Col2 like '%[_]%' or Col2 like '%''%'