此人已疯
当你有了仁慈之心,你就不再是妖了,是人妖!
以前在做数据库开发的时候,确实很少注意SQL语句的通配符。然而最近需要做一个LIKE查询的时候,发现在LIKE关键字中不能有中括号。如要执行这样的语句:SELECT * FROM TableName WHERE FieldName LIKE ‘%Field[abc]Value%’,就会出现查询不到纪录的情况。查了一下文档才知道,原来“[”“]”和“%”一样是LIKE关键字的通配符。

LIKE关键字共有四种通配符。“%”代表“包含0个或更多字符的任意字符串”;“_”代表“任何单个字符”;“[]”代表“指定范围(例如 [a-f])或集合(例如 [abcdef])内的任何单个字符”;“[^]”代表“不在指定范围(例如 [^a - f])或集合(例如 [^abcdef])内的任何单个字符”。

因此,在执行上面的查询时,能够匹配的只能是在FiledValue中包含a、b、c任意单个字符的记录。要想实现原本的目的,就要使用ESCAPE关键字定义转义字符,语句如下:SELECT * FROM TableName WHERE FieldName LIKE ‘%Field/[abc/]Value%’ ESCAPE ‘/’。如果LIKE关键字要匹配的字符串为变量则可以使用String.Insert()方法在指定索引处添加一个字符,如:str = str.Insert(str.IndexOf(“[”),”/”);。
posted on 2007-05-17 11:47  此人已疯  阅读(1930)  评论(0编辑  收藏  举报