L'idea non è malvagia, visto la potenza che ti mette a sisposizione gratuitamente: serve comunque un server e un bel po' di spazio su disco
Da niubbo, quando ho creato il database invece di lasciare la proprietà "collation" impostata come "default" ho specificato "Latin1_General_BIN"
«Chissà a che serve?» ho pensato, ma tutto funzionava e non c'ho fatto caso
Dopo un po' mi accorgo di una cosa: quando eseguo una query (una SELECT su alcuni campi di testo) noto con dispiacere che esegue una ricerca CASE SENSITIVE, cosa strana per SQL Server
Panico :|
Che succede ?_?
Ma niente paura, a tutto c'è rimedio, e Google ci aiuta sempre: basta saper usare un motore di ricerca e stabilire quali sono le parole chiave da cercare :D
In SQL Server 2005 (anche nei precedenti probabilmente) la clausola COLLATE che permette di stabilire come verranno trattate le stringhe: quello di default in genere comprende due impostazioni (oltre al charset):
CI: Case Insensitive (Ignora la differenza tra caratteri maiuscoli o minuscoli, il contrario è CS)Girando questi due parametri si può impostare a proprio piacimento l'esecuzione delel query
AS: Accents Sensitive (Fa differenza tra una "a" e una "à", il contrario è AI)
In caso sia necessaria una query particolare (per esempio una query "case sensitive" su un db/tabella/campo che non lo è) è possibile specificare la clausola direttamente nella query
SELECT * FROM nome_tabella WHERE nome_colonna = 'fuFFa' COLLATE SQL_Latin1_General_CP1_CS_AS
La modifica di questa clausola si può fare tranquillamente dalle impostazioni relative al database, tramite l'interfaccia si SQL Server
Purtroppo una volta create le tabelle anche cambiando il tipo di collation al database, i campi già esistenti rimangono con le impostazioni precendenti
È necessario quindi reimpostare tutte i campi delle varie tabelle già esistenti, o tramite l'interfaccia, o tramite un comando SQL:
ALTER TABLE nome_tabella
ALTER COLUMN nome_colonna varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS
ALTER COLUMN nome_colonna varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS
Buon divertimento :)
Nessun commento:
Posta un commento