jump to navigation

Personalizzare l’ordinamento di una query in SQL Server 2005 portando, in cima al risultato, il record col campo di ricerca uguale alla chiave. 16 Maggio 2008

Posted by gianfrasoft in Transact SQL.
Tags: , , , , , , , , ,
trackback

Nell’ambito di una query di ricerca che, ad esempio, utilizza l’operatore LIKE vogliamo ottenere un risultato ordinato: per far ciò facciamo uso dell’operatore ORDER BY in questo modo:

SELECT
  *
FROM
  Tabella
WHERE
  Tabella.Campo1 LIKE '%CHIAVE%'
ORDER BY
  Tabella.Campo1

Se talora la chiave coincide esattamente col campo sul quale stiamo effettuando la ricerca, ovvero si verifica che in almeno un record Tabella.Campo1 = ‘CHIAVE’, possiamo ottenere che il record che la contiene venga posizionato in testa alla query di ricerca sfruttando la clausaola ORDER BY CASE di SQL Server 2005 in questo modo:

SELECT
  *
FROM
  Tabella
WHERE
  Tabella.Campo1 LIKE '%CHIAVE%'
ORDER BY
  CASE WHEN Tabella.Campo1 = 'CHIAVE' THEN 1 ELSE 2 END,
  Tabella.Campo1

L’esempio è facilmente adattabile all’utilizzo con altri operatori.

Commenti»

No comments yet — be the first.