2017-10-05 58 views
0

我想在SQL Server中进行搜索。当我输入“A BANG”,并使用“Like'%A bang%'”,并按...SQL Server搜索和orderby

我想安排以“A bang”开头的结果,然后结果包含“一声巨响”,但没有启动词。

SELECT * 
FROM 
    (SELECT 
     ROW_NUMBER() OVER (ORDER BY CLNTPFX ASC, CLNTCOY ASC, 
            SURNAME ASC, GIVNAME ASC, 
            CLNTNUM ASC, UNIQUE_NUMBER DESC) ROWN, 
     TEMP1.* 
    FROM 
     (SELECT * 
      FROM CLNTPF 
      WHERE CLNTPFX = 'CN' 
      AND CLNTCOY = '9' 
      AND SURNAME LIKE 'A Bang' 
      AND VALIDFLAG = 1) TEMP1) TEMP2 
WHERE 
    ROWN > 12 
    AND ROWN <= 24 

例预期当搜索 “O”

Owner       
Owner       
Owner       
Owner       
Owner       
A Owner 
A Owner 
A Owner       

你可以帮我吗?

谢谢大家!

+0

分享上述查询和您预期的结果的输出。 – zarruq

+0

实施例预期当搜索“O”: 所有者 所有者 所有者 所有者 甲所有者拥有者拥有者 –

+0

添加一些更多的采样数据与期望的O/P,这样我们就可以根据它建议的解决方案。 –

回答

1

假设c1是您要的方式,开始与O词首先出现的数据排序的列,再其次是有O某处文本的话,那么后面所有换句话说,您可以添加一个order by到您的查询如下。

ORDER BY CASE 
     WHEN c1 LIKE 'O%' 
      THEN 1 
     WHEN c1 LIKE '%O%' 
      THEN 2 
     ELSE 3 end; 

在您的示例数据上,下面是结果。

C1 
------------------------ 
Owner 
Owner 
Owner 
Owner 
A Owner 
A Owner 
A Owner 

您可以查看演示here