SQL中如何进行模糊查询

SQL中如何进行模糊查询,第1张

CHARINDEX、RIGHT、LEFT

重点说下charindex

返回字符串中指定表达式的起始位置。

语法

CHARINDEX

(

expression1

,

expression2

[

,

start_location

]

)

参数

expression1

一个表达式,其中包含要寻找的字符的次序。expression1

是一个短字符数据类型分类的表达式。

expression2

一个表达式,通常是一个用于搜索指定序列的列。expression2

属于字符串数据类型分类。

start_location

expression2

中搜索

expression1

时的起始字符位置。如果没有给定

start_location,而是一个负数或零,则将从

expression2

的起始位置开始搜索。

返回类型

int

注释

如果

expression1

expression2

之一属于

Unicode

数据类型(

nvarchar

nchar

)而另一个不属于,则将另一个转换为

Unicode

数据类型。

如果

expression1

expression2

之一为

NULL

值,则当数据库兼容级别为

70

或更大时,CHARINDEX

返回

NULL

值。当数据库兼容级别为

65

或更小时,CHARINDEX

仅在

expression1

expression2

都为

NULL

时返回

NULL

值。

如果在

expression2

内没有找到

expression1,则

CHARINDEX

返回

0。

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

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

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

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

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

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

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

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

首先将你数据库内的占位符“”,替换成通配符,如果“”只可以代表一位数则替换为“_”或者“”本身,如果一个“”可以代表几个字符则替换为“%”或者是“”。因为不知道你的库规不规范,如果是规范的不知道的位数都标识为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

字段,也就是说将字段中的值作为通配符表达式

)。就这样,很简单,很简单就能实现。只要你把道理想通。

但是,请你注意:这样检索出来的东西不能保证对应。还是那个道理,模式实际上是不确定的,虽然你可以数据库中检索出来,你就能说:

IG84183这条数据是IG84317183

。在现实中肯定不能,除非你在现实中有很强的业务规则对应。否则是很危险的。

select id,name from table where name='李明';

select id,name from table where name like '李%';

上面的是等值查询,即查询姓名只叫叫李明的人的信息,

下面的是模糊查询,查询所有姓李的人的信息,包括李明,可能还会查出其他姓李的人的信息

以上就是关于SQL中如何进行模糊查询全部的内容,包括:SQL中如何进行模糊查询、数据库的模糊查询、数据库中什么是等值查询,什么是模糊查询,最好能举个例子,谢谢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9844578.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存