SQL语句实现按关健字模糊查询,并按匹配度排序
2009-09-11 10:12
661 查看
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 個資料列受到影響)
*/
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 個資料列受到影響)
*/
相关文章推荐
- SQL语句实现按关健字模糊查询,并按匹配度排序
- SQL语句实现按关健字模糊查询,并按匹配度排序
- 实现按关健字模糊查询,并按匹配度排序的SQL语句
- 【ZT】SQL实现多字段模糊匹配关键字查询
- SQL语句实现模糊查询
- asp下实现多条件模糊查询SQL语句
- SQL语句实现模糊查询
- 实现多条件模糊查询SQL语句
- MySQL中根据if标签实现多条件模糊查询(动态SQL语句)
- 关于SQL查询语句的模糊查询,排序用法,limit用法的介绍
- Linq排序、分组、模糊查询、调用外部方法、直接执行SQL语句、事务、修改数据
- mysql 多表关联查询 实现 全文匹配的 模糊搜索接口 SQL
- asp下实现多条件模糊查询SQL语句
- oracle SQL语句练习MERGE、模糊查询、排序、
- Excel 中使用SQL 语句查询数据(七)-----用LIKE 运算符进行模糊匹配查询
- SQL语句实现模糊查询
- 实现多条件模糊查询SQL语句
- 当只有一个输入条件的时匹配数据库表中多个字段模糊查询的SQL语句
- SQL语句实现日期时间模糊查询