我需要帮助从数据库中复杂的数据排序。假设我的数据存储在表中,如下所示:
Description
--------------
JCB Excavator - ECU P/N: 728/35700
Geo Prism 1995 GEO - ABS #16213899 GEO pump
Geo Prism 1995 - GEO ABS #16213897
Geo Prism 1995 - ABS #16213897
Ersatz Airbags, Gurtstrammer und Auto Körper Teile
this test JCB pipe & JCB pump
Wie man BBA reman erreicht
有7行。我想以这样的方式编写SQL查询,结果它将根据我的输入字对数据进行排序。假设我的搜索词是GEO,JCB
两个单词,用逗号分隔。首先出现的行是搜索词找到最长时间的行。因此对于GEO
,该单词在大多数行中具有最大时间。
将需要两种类型:
假设GEO
在最大行中找到搜索词。
因此,所有具有GEO
关键字的行都将首先出现,然后JCB
相关数据将会出现。
在GEO
相关数据中,这些行将首先显示最多GEO
个关键字。
所以输出看起来像。
Description
--------------
Geo Prism 1995 GEO - ABS #16213899 GEO pump
Geo Prism 1995 - GEO ABS #16213897
Geo Prism 1995 - ABS #16213897
this test JCB pipe & JCB pump
JCB Excavator - ECU P/N: 728/35700
Ersatz Airbags, Gurtstrammer und Auto Körper Teile
Wie man BBA reman erreicht
请帮我构建一种适用于所有SQL Server版本的sql。
答案 0 :(得分:1)
答案 1 :(得分:0)
你去吧
declare @t table(Description varchar(1000))
insert into @t
select 'JCB Excavator - ECU P/N: 728/35700 ' union all
select 'Geo Prism 1995 GEO - ABS #16213899 GEO pump ' union all
select 'Geo Prism 1995 - GEO ABS #16213897 ' union all
select 'Geo Prism 1995 - ABS #16213897 ' union all
select 'Ersatz Airbags, Gurtstrammer und Auto Körper Teile ' union all
select 'this test JCB pipe & JCB pump ' union all
select 'Wie man BBA reman erreicht'
declare @search_term varchar(100)
set @search_term ='GEO'
select Description from @t
order by len(Description)-len(replace(Description,@search_term,'')) desc
结果
Description
----------------------------------------------------------
Geo Prism 1995 GEO - ABS #16213899 GEO pump
Geo Prism 1995 - GEO ABS #16213897
Geo Prism 1995 - ABS #16213897
Ersatz Airbags, Gurtstrammer und Auto Körper Teile
this test JCB pipe & JCB pump
Wie man BBA reman erreicht
JCB Excavator - ECU P/N: 728/35700