2013-11-15 15 views
5

Ho letto molto sulle regole di confronto e ho provato alcune cose diverse, ma non riesco a ottenere i risultati desiderati.Corrispondenza di SQL Server per corrispondere a Java senza distinzione tra maiuscole e minuscole. Confronta

Sto cercando una collazione che non faccia distinzione tra maiuscole e minuscole, sensibile all'accento, ma inserisce tutti i caratteri con accenti dopo tutti i caratteri "normali". Per esempio, io voglio un risultato come questo:

  • "ao Ark"
  • "AO Smith Electrical Products Company"
  • "AZ Vesalius"
  • "A.ö.BKH St. Johann/Tirol "

Latin1_General_BIN tratta gli accenti nel modo in cui lo desidero, ma è case sensitive.

Latin1_General_CI_AS, SQL_Latin1_General_CI_AS e Latin1_General_CI_AI tutto restituiscono questo:

  • "ao Ark"
  • "AO Smith Electrical Products Company"
  • "A.ö.BKH St. Johann/Tirol"
  • "AZ Vesalius"

c'è una collazione?

+0

Cosa ti dà Latin1_General_CI_AS? –

+0

@ Love2Learn Latin1_General_CI_AS, SQL_Latin1_General_CI_AS e Latin1_General_CI_AI danno tutti lo stesso risultato di cui sopra. – aiguofer

+0

Come soluzione alternativa, è possibile ordinare con 'UPPER (str)', e usare la collation 'Latin1_General_BIN' ([demo] (http://sqlfiddle.com/#!6/1e4c7/22)). – dasblinkenlight

risposta

0

La semplice risposta a questa domanda è "No" - non c'è collazione che ordini i personaggi nel modo desiderato.

Una collazione codifica le norme che disciplinano il corretto uso dei caratteri sia per una lingua, come greco o polacco, o di un alfabeto, come ad come Latin1_General (l'alfabeto latino usato da occidentali lingue europee).

Ciò che si desidera non è irragionevole, ma non riflette alcun linguaggio o alfabeto che è stato modellato da un confronto corrente di SQL Server.

Come indicato da @dasblinkenlight è possibile ORDER BY (UPPER(str) collate Latin1_General_BIN) ottenere l'ordine che descrivi.

Problemi correlati