由SQL的like说开去(2)

作者:leen 来源:ITPOW 日期:2005-10-4

当使用 LIKE 进行字符串比较时,模式字符串中的所有字符都有意义,包括起始或尾随空格。如果查询中的比较要返回包含"abc "(abc 后有一个空格)的所有行,则将不会返回包含"abc"(abc 后没有空格)的列所在行。但是可以忽略模式所要匹配的表达式中的尾随空格。如果查询中的比较要返回包含"abc"(abc 后没有空格)的所有行,则将返回以"abc"开始且具有零个或多个尾随空格的所有行。

假设表tbl中含有字段fldvarchar类型),表共有四条记录,各记录的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

相关文章