实现按关健字模糊查询,并按匹配度排序的SQL语句

2022-05-24 0 828

复制代码 代码如下:

IF OBJECT_ID(‘TB’)IS NOT NULL DROP TABLE TB

GO

CREATE TABLE tb (ID INT IDENTITY(1,1),VALUE NVARCHAR(100))

INSERT tb SELECT N’中国’

UNION ALL SELECT N’中国人’

UNION ALL SELECT N’中国人民’

UNION ALL SELECT N’日本’

UNION ALL SELECT N’日本人’

UNION ALL SELECT N’我的心中有人姑娘’

UNION ALL SELECT N’人民网’

UNION ALL SELECT N’中国是个伟大的国家’

UNION ALL SELECT N’我们都是中国人,都是炎黄子孙,都是龙人传人’

IF OBJECT_ID(‘fn_SplitStringToROWS’)IS NOT NULL DROP FUNCTION fn_SplitStringToROWS

GO

CREATE FUNCTION fn_SplitStringToROWS

(

@str NVARCHAR(100)

)

RETURNS @t TABLE(v NVARCHAR(2))

AS

BEGIN

DECLARE @i INT

SET @i=1

WHILE @i<=LEN(@str)

BEGIN

INSERT @t SELECT SUBSTRING(@str,@i,1)

SET @i=@i+1

END

RETURN

END

GO

SELECT * FROM DBO.fn_SplitStringToROWS(N’中国人’)

DECLARE @searchSTR NVARCHAR(20)

SET @searchSTR=N’中国人’

SELECT ID,[VALUE] FROM tb a

INNER JOIN fn_SplitStringToROWS(@searchSTR) b

ON CHARINDEX(b.v,a.VALUE)>0

WHERE VALUE LIKE N’%[中国人]%’

GROUP BY ID,VALUE

ORDER BY COUNT(DISTINCT v) DESC

DROP TABLE tb

/*

v

—-





(3 個資料列受到影響)

ID VALUE

———– —————————————————————————————————-

2 中国人

3 中国人民

9 我们都是中国人,都是炎黄子孙,都是龙人传人

6 我的心中有人姑娘

1 中国

8 中国是个伟大的国家

5 日本人

7 人民网

(8 個資料列受到影響)

*/

免责声明:
1、本网站所有发布的源码、软件和资料均为收集各大资源网站整理而来;仅限用于学习和研究目的,您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。 不得使用于非法商业用途,不得违反国家法律。否则后果自负!

2、本站信息来自网络,版权争议与本站无关。一切关于该资源商业行为与www.niceym.com无关。
如果您喜欢该程序,请支持正版源码、软件,购买注册,得到更好的正版服务。
如有侵犯你版权的,请邮件与我们联系处理(邮箱:skknet@qq.com),本站将立即改正。

NICE源码网 MsSql 实现按关健字模糊查询,并按匹配度排序的SQL语句 https://www.niceym.com/59912.html