2017-10-05 36 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