多关键字多字段查询(SQL JAVA)

多关键字多字段查询(SQL JAVA),第1张

关键字查询

1.有关键字查询,与非关键字查询即不输入任务条件查询

2.限制关键字的个数与输入长度,以方便程序设计与维护,以及对性能的提高

3.存储过程中关键字条件默认为NULL,通过判断是否为NULL来获取是否有信息

4.通过自定义函数来获取关键字出现的次数,使用REPLACE方法代替LIKE的方式查询,以大幅度提高性能

6.通过取得关键字出现的次数,来显示有循序的结果集

--简单实例代码,我用的是Sqlserver

,假设只允许输入2个关键字查询

CREATE

PROC

Find

(

@AllWords

bit,

--是否关键字查询

@Word1

VARCHAR(15)

=

NULL,

@Word2

VARCHAR(15)

=

NULL

)

AS

IF

@AllWords

=

0

BEGIN

查询全部

END

IF

@AllWords

=

1

BEGIN

--WordCount接收2个参数(关键字

,需查询字段),返回个整形,

SELECT

*,dbo.WordCount(@Word1,

FindField)+

dbo.WordCount(@Word2,FindField)

AS

Rank

FROM

内容表

ORDER

BY

Rank

DESC

--如果未需要具有关键字的数据就Rank>0就行了

END

--自定义函数

CREATE

FUNCTION

dbo.WordCount

(@Word

VARCHAR(15),

@FindField

VARCHAR(1000))

RETURNS

SMALLINT

AS

BEGIN

--未有关键字或未有查询字段返回0

IF

@Word

IS

NULL

OR

@FindField

IS

NULL

RETURN

0

--使@BiggerWord长度大于关键字用于下面的减法

DECLARE

@BiggerWord

VARCHAR(21)

SELECT

@BiggerWord

=

@Word

+

'x'

--取得替换后的长度

DECLARE

@BigCounts

VARCHAR(2000)

SELECT

@BigCounts

=

REPLACE

(@FindField,

@Word,

@BiggerWord)

--用替换后的长度

减掉

当前查询字段的长度

=

出现的次数

也就是上面加的'X'

RETURN

LEN(@BigCounts)

-

LEN(@FindField)

END

--自己写的,希望对你有帮助

--注:对于上面这样的模式查询,更有利于扩展,同时可以查询主内容与副内容甚至更多,达到更精确的关键字查询

首先处理这类问题的思路是找对应的Api,这是字符串处理,在java.lang包下,String类

splitpublic String[] split(String regex)根据给定的正则表达式的匹配来拆分此字符串。

该方法的作用就像是使用给定的表达式和限制参数 0 来调用两参数 split 方法。因此,结果数组中不包括结尾空字符串。

例如,字符串 "boo:and:foo" 产生带有下面这些表达式的结果:

Regex结果:{ "boo", "and", "foo" }o{ "b", "", ":and:f" }参数:regex - 定界正则表达式

返回:字符串数组,根据给定正则表达式的匹配来拆分此字符串,从而生成此数组。

抛出:PatternSyntaxException - 如果正则表达式的语法无效

此方法的形参是String 返回值是一个截取的String[]数组


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存