/*--------------------------------------------------------------------------------------
t-mac 编写整理
---学习总结使用
--MSDN笔记
----------------------------------------------------------------------------------------*/
---1.使用包含 char(varchar) 和 varchar(nvarchar) 数据的模式的字符串比较可能无法通过 LIKE 比较,nvarchar nchar 有尾随空格
<textarea cols="58" rows="15" name="code" class="c-sharp">create table s1(ss char(3)) insert s1 values('a') insert s1 values('aa') select * from s1 where 'aa' like ss+'%' /* ss ---- */ create table s2(ss nvarchar(3)) insert s2 values('a') insert s2 values('aa') select * from s2 where 'aa' like ss+'%' /* ss ---- a aa*/</textarea>
--2.LIKE 支持 ASCII 模式匹配和 Unicode 模式匹配。
--如果所有参数(match_expression、pattern 和 escape_character,如果存在)均为 ASCII 字符数据类型,则执行 ASCII 模式匹配。
--如果任何一个参数为 Unicode 数据类型,则所有参数都将转换为 Unicode,并执行 Unicode 模式匹配。
--当 Unicode 数据(nchar 或 nvarchar 数据类型)与 LIKE 一起使用时,尾随空格有意义;但对非 Unicode 数据,尾随空格则没有意义。
<textarea cols="50" rows="15" name="code" class="c-sharp">CREATE TABLE t (col1 char(30)); INSERT INTO t VALUES ('Robert King'); SELECT * FROM t WHERE col1 LIKE '% King' -- 返回一行 -- Unicode pattern matching with nchar column CREATE TABLE ts (col1 nchar(30)); INSERT INTO ts VALUES ('Robert King'); SELECT * FROM ts WHERE col1 LIKE '% King' -- 无返回值 -- Unicode pattern matching with nchar column and RTRIM CREATE TABLE ta (col1 nchar (30)); INSERT INTO ta VALUES ('Robert King'); SELECT * FROM ta WHERE RTRIM(col1) LIKE '% King' -- 返回一行 </textarea>
---3.将通配符作为文字使用 通配符--(百分号 (%)、下划线 (_) 和左括号 ([) 通配符(如果它们包含在双括号 ([ ]) 中))
--方法1:用[]包含通配符
<textarea cols="47" rows="5" name="code" class="c-sharp">if '5%6' like '5[%]%' print 'yes' --yes</textarea>
--方法2:使用 ESCAPE 子句
<textarea cols="50" rows="15" name="code" class="c-sharp">CREATE TABLE mytbl2 ( c1 sysname ); GO INSERT mytbl2 VALUES ('Discount is 10-15% off'); INSERT mytbl2 VALUES ('Discount is .10-.15 off'); GO SELECT c1 FROM mytbl2 WHERE c1 LIKE '%10-15!% off%' ESCAPE '!'; /* c1 ------------------------------ Discount is 10-15% off */ --ps:如果转义符后面的字符不是通配符,则将放弃转义符并将该转义符后面的字符作为该模式中的常规字符处理 if ('as' like '%a!s%' escape '!') print 'yes' ----yes </textarea>