加入收藏 | 设为首页 | 会员中心 | 我要投稿 海南站长网 (https://www.0898zz.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > 搜索优化 > 正文

mysql模糊查询,有比like更高效的么

发布时间:2023-02-03 18:37:03 所属栏目:搜索优化 来源:互联网
导读: mysql模糊查询,有比like更高效的么
SELECT*FROMcourseWHEREnameLIKE'%晓%'运行效果:注意事项:使用like%name%这样的语句是不会走索引的,相当于全表扫描
本回答由网友推荐

当数据量非常

mysql模糊查询,有比like更高效的么

SELECT*FROMcourseWHEREnameLIKE'%晓%'运行效果:注意事项:使用like%name%这样的语句是不会走索引的,相当于全表扫描

本回答由网友推荐

当数据量非常大的时候怎么优化mysq的模糊查询

是发送到发送到放松放松的份上的冯绍峰

如何查询优化及分页算法方案?

即使在我们的HP ML 350 G3服务器上试验时,CPU峰值也能达到90%,一般持续在70%左右。

本文的试验数据都是来自我们的HP ML 350服务器。服务器配置:双Inter Xeon 超线程 CPU 2。4G,内存1G,操作系统Windows Server 2003 Enterprise Edition,数据库SQL Server 2000 SP3。

求一本比较好的能够讲清楚MySQL优化?求一本比较好的能够讲清楚

其实,个人感觉,并不需要你这么仔细的去看这些书籍,要亲手实践。如果不清楚的简单操作网上进行查询即可。关于计算机的书籍你会越看越觉得没意思。

mysql 模糊查询

1、如果你什么也没有输入的话,sql语句就如下:

select * from tablename where name like '%%';

这样的话就是 name 等于任何字符都会被查出,当然所有内容都会出来了。

2、这不是问题,从查询的设计角度看,什么都不输入自然是要匹配所有数据,相反输入了东西就是匹配它了。

*****************

*****************

如果你想什么都不输入的时候什么也不返回的话方法如下:

在后台写两个sql,类似如下

if ($name == ""){

$exec="select * from tablename where 1=2";

}else{

$exec="select * from tablename where name like '%$name%'";

以上,希望对你有所帮助。我描述下

应该是 输入什么就出什么(这儿有2个方向,1.模糊查询2.精确查询)

然后不输入就查询全部的

根据你的描述是第一个应该

select * from tablename where name like ''%''+$name+''%''

大概就是这样的

如果什么都不输入,点“查询”也不会出现任何结果该怎么写?

那就不要用like 直接用=号

把where 后的改为 name = '$name'

因为数据多了like的效能不好给你个思路吧,如果什么都不输入,那么$name的值就是空值,你可以在前台加判断,如果是空值的话那返回就可以了如果是中文可能还有编码问题,为什么不是select * 而是select count(*),页面值是否正确传入servlet?这count 不管如何都有结果的

你最好看看你的notes的值是不是正确?

还有查查是不是因为table_name和where之间没加空格

如何用MYSQL模糊查询···

SQL模糊查询的语法为

“SELECT column FROM table WHERE column LIKE ';pattern';”。

SQL提供了四种匹配模式:

1. % 表示任意0个或多个字符。如下语句:

SELECT * FROM user WHERE name LIKE ';%三%';

将会把name为“张三”,“三脚猫”,“唐三藏”等等有“三”的全找出来;

2. _ 表示任意单个字符。语句:

SELECT * FROM user WHERE name LIKE ';_三_';

只找出“唐三藏”这样name为三个字且中间一个字是“三”的;

SELECT * FROM user WHERE name LIKE ';三__';

只找出“三脚猫”这样name为三个字且第一个字是“三”的;

3. [ ] 表示括号内所列字符中的一个(类似与正则表达式)。语句:

SELECT * FROM user WHERE name LIKE ';[张李王]三';

将找出“张三”、“李三”、“王三”(而不是“张李王三”);

如 [ ] 内有一系列字符(01234、abcde之类的)则可略写为“0-4”、“a-e”

SELECT * FROM user WHERE name LIKE ';老[1-9]';

将找出“老1”、“老2”、……、“老9”;

如要找“-”字符请将其放在首位:';张三[-1-9]';

4. [^ ] 表示不在括号所列之内的单个字符。语句:

SELECT * FROM user WHERE name LIKE ';[^张李王]三';

将找出不姓“张”、“李”、“王”的“赵三”、“孙三”等;

SELECT * FROM user WHERE name LIKE ';老[^1-4]';

将排除“老1”到“老4”寻找“老5”、“老6”、……、“老9”。

!最后是重点!

由于通配符的缘故,导致我们查询特殊字符“%”、“_”、“[”、“';”的语句无法正常实现mysql 模糊搜索 优化,而把特殊字符用“[ ]”括起便可正常查询。据此我们写出以下函数:

function sqlencode(str)

str=replace(str,"';","';';")

str=replace(str,"[","[[]") ';此句一定要在最先

str=replace(str,"_","[_]")

str=replace(str,"%","[%]")

sqlencode=str

end function如果是通过姓名查找呢,我建议你还是把所有姓都定义好在查询吧(可以通过拼音索引增加软件友好度),这样查询的效率会好很多,总比每次都要把姓名从数据库里拿出来再抽象成模糊查询字段

再查询要快吧。

如果真是可以自己抽象出来所有符合的模糊对象的话,我看快赶上人工智能了,计算量不小。现阶段应该还用不到。用到了,我们也做不出来。

不知道对你有用吗,第二次回答问题。

O(∩_∩)O哈哈~

再看看别人怎么说的。如果是通过姓名查找呢,我建议你还是把所有姓都定义好在查询吧(可以通过拼音索引增加软件友好度),这样查询的效率会好很多,总比每次都要把姓名从数据库里拿出来再抽象成模糊查询字段

再查询要快吧。

如果真是可以自己抽象出来所有符合的模糊对象的话,我看快赶上人工智能了,计算量不小。现阶段应该还用不到。用到了,我们也做不出来。

不知道对你有用吗,第二次回答问题。

O(∩_∩)O哈哈~

(编辑:海南站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!