您现于de位置乃:亚博 > APP正则

亚博 2015-09-08 APP正则 2890

mysql正则匹配模糊查询某个字段

我们于查询某个字段de时候 有时候只想匹配某段数据 比如想查询这篇文章de所有关键词乃否存于某个关键词 我们往往需要匹配 我们下面来讲解1下如何匹配查询某个关键词值

SQL模糊查询de语法为
"SELECT column FROM table WHERE column LIKE ';pattern';".

SQL提供了4种匹配模式:
1. % 表示任意0个或多个字符.如下语句:
SELECT * FROM user WHERE name LIKE ';%3%';
将会把name为"张3" "3脚猫" "唐3藏"等等有"3"de全找出来;

2. _ 表示任意单个字符.语句:
SELECT * FROM user WHERE name LIKE ';_3_';
只找出"唐3藏"这样name为3个字且中间1个字乃"3"de;
SELECT * FROM user WHERE name LIKE ';3__';
只找出"3脚猫"这样name为3个字且第1个字乃"3"de;

3. [ ] 表示括号内所列字符中de1个(类似与正则表达式).语句:
SELECT * FROM user WHERE name LIKE ';[张李王]3';
将找出"张3" "李3" "王3"(而不乃"张李王3");

如 [ ] 内有1系列字符(01234 abcde之类de)则可略写为"0-4" "a-e"
SELECT * FROM user WHERE name LIKE ';老[1-9]';
将找出"老1" "老2" …… "老9";
如要找"-"字符请将其放于首位:';张3[-1-9]';

4. [^ ] 表示不于括号所列之内de单个字符.语句:
SELECT * FROM user WHERE name LIKE ';[^张李王]3';
将找出不姓"张" "李" "王"de"赵3" "孙3"等;
SELECT * FROM user WHERE name LIKE ';老[^1-4]';
将排除"老1"到"老4"寻找"老5" "老6" …… "老9".

!最后乃重点!
由于通配符de缘故 导致我们查询特殊字符"%" "_" "[" "';"de语句无法正常实现 而把特殊字符用"[ ]"括起便可正常查询.据此我们写出以下函数:

function sqlencode(str)
str=replace(str,"';","';';")
str=replace(str,"[","[[]") ';此句1定要于好的
str=replace(str,"_","[_]")
str=replace(str,"%","[%]")
sqlencode=str
end function

评论