Query per ricercare stringhe in minuscolo

giovedì 04 marzo 2010 - 09.20

Marylight Profilo | Newbie

Esiste una funzione che mi permette di ricercare stringhe scritte in minuscolo?

alx_81 Profilo | Guru

>Esiste una funzione che mi permette di ricercare stringhe scritte
>in minuscolo?
Ciao, è un discorso di collation.
Di default, se si sta parlando di SQL Server, la collation è quella Latin1_General Accent Sensitive e Case Insenstive.
Quindi se ricerchi in maiuscolo o minuscolo, per il database è la stessa cosa. Immagino che la richiesta nasca da ciò

Detto questo, per ricercare Case Sensitive devi usare la collation Latin1_General_AS_CS come nell'esempio che segue:

USE tempdb; GO CREATE TABLE dbo.Stringhe ( stringa varchar(20) NOT NULL ) GO INSERT INTO dbo.Stringhe VALUES ('ciao') INSERT INTO dbo.Stringhe VALUES ('miao') INSERT INTO dbo.Stringhe VALUES ('bau') INSERT INTO dbo.Stringhe VALUES ('CIAO') INSERT INTO dbo.Stringhe VALUES ('MIAO') INSERT INTO dbo.Stringhe VALUES ('BAU') GO -- ricerca Case Insensitive SELECT * FROM dbo.Stringhe WHERE stringa = 'ciao' /* stringa -------------------- ciao CIAO */ -- ricerca Case Sensitive SELECT * FROM dbo.Stringhe WHERE stringa = 'ciao' COLLATE Latin1_General_CS_AS /* stringa -------------------- ciao */ -- pulizia DROP TABLE dbo.Stringhe GO
--

Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

Mass1 Profilo | Newbie

salve,
premesso che ho un db su microsoft sql 2008 express
io ho il medesimo problema
ovvero sul campo SOTTOCONTO ho il medesimo codice C0303 a volte scritto così: c0303
e risolverei sapendo se è possibile lanciare una query che mi porta il contenuto di tutti i record
in quel campo a MAIUSCOLO
spero di essermi spiegato e sopratutto che cio sia possibile con una query
grazie

alx_81 Profilo | Guru

>salve,
ciao

>premesso che ho un db su microsoft sql 2008 express
>io ho il medesimo problema
>ovvero sul campo SOTTOCONTO ho il medesimo codice C0303 a volte
>scritto così: c0303
>e risolverei sapendo se è possibile lanciare una query che mi
>porta il contenuto di tutti i record
>in quel campo a MAIUSCOLO
>spero di essermi spiegato e sopratutto che cio sia possibile
>con una query
ma il problema è che non riesci a ricavarli tutti perchè le tue impostazioni considerano differenti maiuscole e minuscole, oppure è solo per leggerli da qualche parte e vederli tutti uguali magari su di un'applicazione? Perchè nel secondo caso, non è un problema di database ma di formato di output che la tua applicazione decide di dare al campo.

>grazie
di nulla!
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

Mass1 Profilo | Newbie

ciao,
le impostazioni del database "non case sensitive" mi vanno bene
soltanto che dovrei sistemare i valori già inseriti
perchè
dall'applicazione da cui leggo la tabella il problema non è "visivo" ma proprio di funzionamento
in quanto mi sono accorto che quando in quel campo il medesimo codice è scritto anche in minuscolo
mi crea duplicati sulla stampa dei bilanci... x questo voglio portare tutto a maiuscolo
il problema principale è che dal gestore di query del msql server studio non so al momento come impostare una query che mi porti tutto maiuscolo nel campo SOTTOCONTO adesso e che mi possa servire ancora in futuro in altre circostanze (ho sempre usato ms access per le operazioni sui db ma vorrei staccarmene);
grazie per volermi indicare la sintassi della query se possibile, inquanto ho cercato a lungo (google) ma non sono riuscito a trovare niente.

alx_81 Profilo | Guru

>ciao,
ciao

>in quanto mi sono accorto che quando in quel campo il medesimo
>codice è scritto anche in minuscolo mi crea duplicati sulla stampa dei bilanci... x questo voglio
>portare tutto a maiuscolo
ok, non entro troppo nel dettaglio

>il problema principale è che dal gestore di query del msql server
>studio non so al momento come impostare una query che mi porti
>tutto maiuscolo nel campo SOTTOCONTO adesso e che mi possa servire
>ancora in futuro in altre circostanze (ho sempre usato ms access
>per le operazioni sui db ma vorrei staccarmene);
se devi semplicemente trasformare minuscole in maiuscole puoi usare la funzione UPPER:

UPDATE TuaTabella
SET TuoCampo = UPPER(TuoCampo)
WHERE <eventuale where condition>

se lo devi fare su tutta la tabella, evita la where. Fai attenzione che è un'operazione pesante che effettua lock pesanti e se hai operatività forse è meglio pianificare l'operazione quando nessuno lavora su quel db.


--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

Mass1 Profilo | Newbie

ok perfetto grazie
la provo prima su una replica qui sul mio pc
poi disconnetto tutti e la lancio sul db
i campi interessati dovrebbero essere soltanto 2
ne farò uno per volta
(prima faccio un bkp)
ti faccio sapere
________________
ok perfetto ha funzionato grazie molte era quello di cui avevo bisogno
naturalmente adesso che il db è corretto, xchè non si ripeta il problema devo individuare la causa di queste eccezioni
(ovvero erano soltanto uno o due record interessati dal codice in minuscolo)
dato che il programma in inserimento e in modifica converte sempre il sottoconto in maiuscolo...
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5