根据列值而非列名查找订单

时间:2017-06-07 07:55:17

标签: sql sql-server

我有一个查询,我想根据列值而不是列名来订购,即

假设我有一个列"描述"在表格和我的SQL中我喜欢条件

Select * from tableName 
where Description like '%Bombay%' 
or Description like '%Hotel%' like Description like '%Rent%'

如果列描述包含所有三个值或两个值或一个值,即如果所有三个值都在描述列中,它应该在顶部

,我想订购记录

在sql中可以吗?

1 个答案:

答案 0 :(得分:3)

drop table if exists dbo.tableName;


create table dbo.tableName (
ID int primary key
, Description varchar(100)
);

insert into dbo.tableName (ID, Description)
values (1, 'Hotel Bombay Rent')
, (2, 'Hotel Bombay')
, (3, 'Hotel')
, (4, 'Aparment');



select
t.ID
, t.Description
from dbo.tableName t
order by (case when t.Description like '%Hotel%' then 1 else 0 end)
+ (case when t.Description like '%Bombay%' then 1 else 0 end)
+ (case when t.Description like '%Rent%' then 1 else 0 end) desc