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

我查了一个代码可是在PL/SQL中报错了。IFOBJECT_ID('TB')ISNOTNULLDROPTABLETBGOCREATETABLEtb(IDINTIDENTI... 我查了一个代码可是在PL/SQL中报错了。

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

===========================================================
有没有适用于oracle的实现按关健字模糊查询,并按匹配度排序的SQL语句
展开
 我来答
李偉大
2014-07-15 · 超过36用户采纳过TA的回答
知道小有建树答主
回答量:143
采纳率:0%
帮助的人:75.1万
展开全部
模糊比对 要在资料架构下功夫,和你怎麼去分词,与比较,和怎麼去设计有关!!

如果单纯以你的SQL来看,以"中国人"来做基准,也分不出来东西有多精准,就是一定会有"中国人"在字串中而已!!
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
love14529977
2014-07-15 · TA获得超过357个赞
知道小有建树答主
回答量:585
采纳率:90%
帮助的人:286万
展开全部
这个貌似没有的吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式