OVH Cloud OVH Cloud

upper ou lower

4 réponses
Avatar
mic
bonjour à tous
j'aimerais dans une requète tester si le contenu d'une chaine est en
majuscule ou en minuscule
avez vous une idée de la syntaxe à utiliser
merci pour votre aide
mic

4 réponses

Avatar
Gilles TOURREAU
mic vient de nous annoncer :
bonjour à tous
j'aimerais dans une requète tester si le contenu d'une chaine est en
majuscule ou en minuscule
avez vous une idée de la syntaxe à utiliser
merci pour votre aide
mic



Si tu veux toutes les rubriques qui sont en majusucules :
SELECT * FROM MaTable WHERE Rubrique = UPPER(Rubrique)

Réciproquement en minusucules !

Cordialement

--
Gilles TOURREAU
Responsable Informatique


Société P.O.S
Spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
Avatar
Rudi Bruchez
Gilles TOURREAU a écrit:

Si tu veux toutes les rubriques qui sont en majusucules :
SELECT * FROM MaTable WHERE Rubrique = UPPER(Rubrique)



Bonjour,

Malheureusement non. Si la colonne est en collation Case Insensitive (c'est
très souvent le cas), cette comparaison renverra toujours vrai.

Il faut utiliser une collation explicitement :

-- ---- code start
-- pour voir la collation de la base courante
SELECT DATABASEPROPERTYEX(DB_NAME(), 'collation')

DECLARE @str1 varchar(30), @str2 varchar(30)
SET @str1 = 'salut'
SET @str2 = 'SALUT'

IF @str1 = UPPER(@str2)
PRINT 'ah bon ?'

-- par contre :
IF @str1 COLLATE Latin1_General_CS_AI = UPPER(@str2)
PRINT 'ah bon ?'
ELSE
PRINT 'Voilà !'
-- ---- code end

--
Rudi Bruchez
Consultant indépendant SQL Server
MCDBA, MCT, SCJP2
http://www.babaluga.com/
Avatar
Fred BROUARD
Bonjour,

mic a écrit :
bonjour à tous
j'aimerais dans une requète tester si le contenu d'une chaine est en
majuscule ou en minuscule
avez vous une idée de la syntaxe à utiliser
merci pour votre aide
mic



C'est tout à fait possible et très simple en jouant sur les collations à
l'aide de la clause COLLATE :

SELECT ...
FROM ...
WHERE Macolonne = UPPER(Macolonne) COLLATE French_CS_AI

Si macolonne est en majuscule sera pris en compte.

Pour savoir si c'est maj ou min :

SELECT CASE
WHEN Macolonne = UPPER(Macolonne) COLLATE French_CS_AI THEN 'MAJ'
WHEN Macolonne = LOWER(Macolonne) COLLATE French_CS_AI THEN 'min'
WHEN Macolonne IS NULL THEN NULL
ELSE 'mixte'
END
FROM ...

Lisez l'article que j'ai écrit sur les collations :
http://sqlpro.developpez.com/cours/sqlserver/collations/

A +

--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
Avatar
mic
merci à tous pour votre aide ça fonctionne

"Fred BROUARD" a écrit :

Bonjour,

mic a écrit :
> bonjour à tous
> j'aimerais dans une requète tester si le contenu d'une chaine est en
> majuscule ou en minuscule
> avez vous une idée de la syntaxe à utiliser
> merci pour votre aide
> mic

C'est tout à fait possible et très simple en jouant sur les collations à
l'aide de la clause COLLATE :

SELECT ...
FROM ...
WHERE Macolonne = UPPER(Macolonne) COLLATE French_CS_AI

Si macolonne est en majuscule sera pris en compte.

Pour savoir si c'est maj ou min :

SELECT CASE
WHEN Macolonne = UPPER(Macolonne) COLLATE French_CS_AI THEN 'MAJ'
WHEN Macolonne = LOWER(Macolonne) COLLATE French_CS_AI THEN 'min'
WHEN Macolonne IS NULL THEN NULL
ELSE 'mixte'
END
FROM ...

Lisez l'article que j'ai écrit sur les collations :
http://sqlpro.developpez.com/cours/sqlserver/collations/

A +

--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************