导航:首页 > 编程大全 > 对数据库进行模糊搜索

对数据库进行模糊搜索

发布时间:2023-05-12 06:20:36

A. 在SQL数据库中怎样实现模糊查找匹配。

使用 like
例如,查询带“蚂蚁”的某字段内容记录,则如下写语句:
select * from table where field1 like '%蚂蚁%'

B. 搞定MySQL数据库中文模糊检索问题

在MySQL下,在进行中文模糊检索时,经常会返回一些与之不相关的记录,如查找“%a%”时,返回的可能有中文字符,却没有a字符存在。本人以前也曾遇到过类似问题,经详细阅读MySQL的Manual,发现可以有一种方法很方便的解决并得到满意的结果。
例子:
希望通过“标题”对新闻汪没顷库进行检索,关键字可能包含是中英文,如下SQL语句:
QUOTE:
select
id,title,name
from
achech_com.news
where
title
like
'%a%'
返回的结果,某些title字段确定带了“a”关键字,而有些则只有中文,但也随之返回在检索结果中。
解决方法,使用BINARY属性进行检索,如:
QUOTE:
select
id,title,name
from
achech_com.news
where
binary
title
like
'%a%'
返回的结果较之前正确,但英文字母区分大小写,故有时在检索如“Achech”及“achech”的结果是不一样的。知道了困陆使用BINARY属性可以解
决前面察拆这个问题,再看看MySQL支持的UCASE及CONCAT函数,其中UCASE是将英文全部转成大写,而CONCAT函数的作用是对字符进行连
接,以下是我们完全解决后的SQL语句:
QUOTE:
select
id,title,name
from
achech_com.news
where
binary
ucase(title)
like
concat('%',ucase('a'),'%')
检索的步骤是先将属性指定为BINARY,以精确检索结果,而被like的title内容存在大小写字母的可能,故先使用ucase函数将字段内容全部
转换成大写字母,然后再进行like操作,而like的操作使用模糊方法,使用concat的好处是传进来的可以是直接的关键字,不需要带“%”万用符,
将“'a'”直接换成你的变量,在任何语言下都万事无忧了。当然你也可以这么写:
QUOTE:
select
id,title,name
from
achech_com.news
where
binary
ucase(title)
like
ucase('%a%')
检索的结果还算满意吧,不过速度可能会因此而慢N毫秒。

C. 怎样做数据库的模糊查询

select * from 表 where 字段 like '%值%' --值的左滑数右两边带%号,是模糊查询该字段所包含的数据。
如果 like '值%',值右边带%号,是指模糊查询该字段陵让启从值到%所包含的数据.
比如:查询姓名为姓李的记录,就是likt '李%',
如果 like '%李',值左边带%号,是指模糊查询该字段从%到值所尺如包含的数据。
比如:查询名为林的记录,就是 like '%林'

D. Mongodb数据库的模糊搜索

模糊查询简介

MongoDB查询条件可以使用正则表达式,从而实现模糊查询的功能。模糊查询可以使用$regex操作符或直接使用正则表达式对象。

$regex操作符的介绍

MongoDB使用$regex操作符来设置匹配字符串的正则表达式,使用PCRE(Pert Compatible Regular Expression)作为正则表达式语言。

regex操作符

{<field>:{$regex:/pattern/,$options:’<options>’}}

{<field>:{$regex:’pattern’,$options:’<options>’}}

{<field>:{$regex:/pattern/<options>}}

正则表达式对象

{<field>: /pattern/<options>}$regex与正则表达式对象的区别:

在$in操作符中只能使用正则表达式对象,例如:{name:{$in:[/^joe/i,/^jack/}}

在使用隐式的$and操作符中,只能使用$regex,例如:{name:{$regex:/^jo/i, $nin:['john']}}

当option选项中包含X或S选项时,只能使用$regex,例如:{name:{$regex:/m.*line/,$options:"si"}}

$regex操作符的使用

$regex操作符中的option选项可以改变正则匹配的默认行举神为,它包括i, m, x以及S四个选项,其含义如下

i 忽略大小写,{<field>{$regex/pattern/i}},设置i选项后,模式中的字母会进行大小写不敏感匹配。

m 多行匹配模式,{<field>{$regex/pattern/,$options:'m'},m选项会更改^和$元字符的默认行为,分别使用与行的开头和结尾匹配,而不是与输入字符串的开头和结尾匹配。

x 忽略非转义的空白字符,{<field>:{$regex:/pattern/,$options:'m'},设置x选项后,正则表达式中的非转义的空白字符将被忽略,同时井号(#)被解释为注释的开头注,只能显式位于option选项中。

s 单行匹配模式{<field>:{$regex:/pattern/,$options:'s'},设置s选项后,会改变模式中的点号(.)元字符的默认行为,它会匹配所有字符,包括换行符(\n),只能显式位于option选项中。

使用$regex操作符时,需要注意下面几个问题:

i,m,x,s可以组合使用,例如:{name:{$regex:/j*k/,$options:"si"}}

在设置索弓}的字段上进行正则匹配可以提高查询速度,而且当正则表达式使用的是前缀表脊答袭达式时,查询速度会进一步提高,例如:{name:{$regex: /^joe/}

上面介绍的元字符可能就会让我们在查询的时候出现一些问题,比如有时候想要查询出所有带价格的模糊商品的时候用了.元字符进行模糊搜索,这时候会查询出来全部的数据;

这个时候就需要对模糊查询的条件进行一些操作,转义樱兄一下:

E. 搞定MySQL数据库中文模糊检索问题

在 MySQL下 在进行中文模糊检索时 经常会返回一些与之不相关的记录 如查找 %a% 时 返回的可能有中文字符 却没有a字符存在 本人以前也曾遇到过类似问题 经详细阅读MySQL的Manual 发现可以有一种方法很方便的解决并得到满意的结果 例子 希望通过 标题 对新闻库进行检索 关键字可能包含是中英文 如下SQL语句

QUOTE: select id title name from achech_ news where title like %a% 返回的结果 某些title字段确定带了 a 关键字 而有些则只有中文 但也随之返回在检索结果中 解决方法 使用 BINARY 属性进行检索 如

QUOTE: select id title name from achech_ news where binary title like %a%

返回的结果较之前正确 但英文字母区分大小写 故有时在检索如 Achech 及 achech 的结果是不一样的 知道了使用 BINARY 属性可以解决前面这个问题 再看看 MySQL 支持的UCASE 及基搜 CONCAT 函数 其中 UCASE 是将英文全部转成大写 而CONCAT函数的作用是对字符进行连接 以下是我们完全解决后的SQL 语句

QUOTE: select id title name from achech_ news where binary ucase(title) like concat( % ucase( a ) % ) 检索的步骤是先将属性指定为 BINARY 以精确检索结果 而被 like 的 title内容存在大小写字母的可能 故先使用 ucase 函数将字段内容全部转换成大写字母 然后再进行 like 操作 而 like 的操作使用模糊方法 使巧塌用 concat的好处是传进来的可以是直接的关键字 不需要带 % 万用符 将 a 直接换成你的变量 在任何语言下都万搏宽历事无忧了 当然你也可以这么写

lishixin/Article/program/MySQL/201311/29449

F. 数据库的模糊查询

明确的告诉你。。。就这么直接检索不行。。。

大家不知道看明白没有:这是用确定数据检索不确定数据。。。不是你们说的用通配符能解决的事情。

数据检索的本质是用模式(就是不确定数据),检索符合模式的确定值。

确定性就是唯一性,而模式是不确定的。。。

我们输入IG84317183的时候,这是个确定值,是唯一的。而这个唯一值可能属于的模式是无穷的或者是数量非常巨大的

从数学上来说,怎么可能用确定值用检索不确定值?

就像你说的:可能是IG8?????,而这几个问号可能的组合就有10万。也可能是I?G8431???,或者其他。

所以很简单,唯一可行的方法是倒过来,用你数据库内的内容来匹配这个确定值。因为虽然模式是不确定的,但是你数据库内储存的是有限的确定的。

首先将你数据库内的占位符“?”,替换成通配符,如果“?”只可以代表一位数则替换为“_”或者“?”本身,如果一个“?”可以代表几个字符则替换为“%”或者是“*”。因为不知道你的库规不规范,如果是规范的不知道的位数都标识为IG8???????这种,长度也都一样的话,可能就不用替换,因为?本身就是通配符(表示一位的)。因为不知道你用的是SQL SERVER,ORACLE还是其他的。

然后我们就可以用'IG84317183' 去 LIKE 你数据库里的带通配符的模式。

很简单的语句就是:

如果有表“纸币表”,字段名是“纸币号”,则:

替换为“%”的

select * from 纸币表 where 'IG84317183' LIKE REPLACE(纸币号,'?','%');

也可以替换为“_”的:
select * from 纸币表 where 'IG84317183' LIKE REPLACE(纸币号,'?','_');

如果不替换就直接:

select * from 纸币表 where 'IG84317183' LIKE 纸币号;

注意LIKE的两边跟我们平时用的是反的(一般来说是 字段 like '某个值',现在是 '某个值' like 字段,也就是说将字段中的值作为通配符表达式 )。就这样,很简单,很简单就能实现。只要你把道理想通。

但是,请你注意:这样检索出来的东西不能保证对应。还是那个道理,模式实际上是不确定的,虽然你可以数据库中检索出来,你就能说:
IG84???183这条数据是IG84317183 ???。在现实中肯定不能,除非你在现实中有很强的业务规则对应。否则是很危险的。

G. Mysql如何对数据库进行模糊查询

  1. 例子如下:SELCET * FROM T-USER U WHERE CONCAT(U.LASTNAME,U.FIRSTNAME) LIKE '%$LSP_NAME$%'

    LASTNAME 字段是姓;

    FIRSTNAME字段是名字;

H. SQL数据库怎么实现模糊查询

实现的方法和详细的操作步骤如下:

1、第一步,按“Ctrl + N”创建一个SQL查询,如下图所示,然后进入下一步。

I. ComboBox如何实现对数据库模糊查询!!!

方案1:建议你将模糊搜索的事件放到一个按钮中执行,比如查询,点击后再通过SQL的like语句将结果放入combobox控件中,这样就行了。
方案2:你在textbox的change事件里写模糊查询语句,将查询的内容实时的放入combobox控件中即可,但是这个要根据你数据库的具体容量来定,如果数据库信息过于庞大,不建议这样。

阅读全文

与对数据库进行模糊搜索相关的资料

热点内容
new文件怎么改为pdf 浏览:930
刻录文件用什么打印机 浏览:888
德国大数据工程师年薪大概多少钱 浏览:870
训练哪个app好 浏览:821
90版本新男魔法师刷图加点2015 浏览:881
如何进行数据差异性比较 浏览:68
微信聊天记录默认存在哪个文件夹 浏览:252
张孝祥java邮件开发详解 浏览:431
财政保障水平分析取哪个数据 浏览:391
linux下增加路由命令 浏览:419
iphone冲刷固件 浏览:604
网络机房平面图 浏览:579
笔记本电脑卡慢怎么处理win10 浏览:77
编程仿真用什么软件 浏览:424
数控编程到哪里找工作 浏览:48
ps滤镜液化膨胀工具 浏览:426
一张表的数据比例是多少 浏览:497
微信绑不了交行信用卡吗 浏览:86
泰住建201764号文件内容 浏览:23
Excel管理文件夹 浏览:427

友情链接