当使用 LIKE 进行字符串比较时,模式字符串中的所有字符都有意义,包括起始或尾随空格。如果查询中的比较要返回包含"abc "(abc 后有一个空格)的所有行,则将不会返回包含"abc"(abc 后没有空格)的列所在行。但是可以忽略模式所要匹配的表达式中的尾随空格。如果查询中的比较要返回包含"abc"(abc 后没有空格)的所有行,则将返回以"abc"开始且具有零个或多个尾随空格的所有行。
假设表tbl中含有字段fld(varchar类型),表共有四条记录,各记录的fld值分别是:"abc "(abc后有一中文空格),"abc "(abc后有一英文空格),"abc"," abc"(abc前一有英文空格)。那么:
select * from tbl where fld like 'abc',将取出前三条记录,记录中的尾随空格被忽略。
select * from tbl where fld like 'abc '(abc后有一中文空格),那么将取出前两条记录,模式字符串中的尾随空格不能忽略。
select * from tbl where fld like 'abc '(abc后有一英文空格),那么将取出前两条记录。
select * from tbl where fld like ' abc'(abc前有一中文空格),那么将取出第四条记录。
如果上例中fld字段类型为char(20),那么第三、三条SQL语句将取出前三条记录,因为char类型字段会在记录后以空格补足长度,其它一样。
最后更新:2006-03-12 12:56