[SQL] Différencier majuscule et minuscule

Résolu
Laaris Messages postés 130 Date d'inscription   Statut Membre Dernière intervention   -  
Laaris Messages postés 130 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai un petit soucis sous Access 97, j'ai une table qui répertorie les cases d'une grille (A1, A2, A3 ...)

Comme la grille est très grande on arrive à des cases qui ont pour référence (AA1, AA2, AA3) puis (aA1, aA2, aA3)

Le problème pour ces deux derniers cas est que comme Access, par défaut, ne différencie pas majuscule et minuscule, quand j'exécute la requête:

SELECT *
FROM coord_mailles
WHERE Description="AA1";


il me retourne "AA1" et "aA1", ce qui ne va pas du tout.

Je cherche donc une fonction qui différencie majuscule et minuscule dans une requête.

Merci d'avance.
A voir également:

3 réponses

Christounet Messages postés 1264 Date d'inscription   Statut Membre Dernière intervention   1 392
 
Bonjour Laaris,

Le code suivant devrait faire ce que tu veux
SELECT *
FROM coord_mailles
WHERE StrComp(Description,'AA1',0) = 0;


A plus
2
Laaris Messages postés 130 Date d'inscription   Statut Membre Dernière intervention   73
 
Merci pour vos réponses.

strcomp fonctionne dans le cas que j'ai mentionné mais c'était juste un exemple, et elle ne marchera pas pour d'autres requêtes notamment quand je veux faire un GROUP BY Description ou un SELECT DISTINCT Description ...


Pour ce qui est de l'option case sensitive, c'est juste un truc à activer dans un des menus d'Access?
0
Christounet Messages postés 1264 Date d'inscription   Statut Membre Dernière intervention   1 392
 
Bonjour Laaris,

En cherchant sur le site de Microsoft, j'ai trouvé un code qui devrait t'aider
Crées tout d'abord un module contenant le code suivant
Function StrToHex(S As Variant) As Variant
         Dim Temp As String, I As Integer
            If VarType(S) <> 8 Then
               StrToHex = S
            Else
               Temp = ""
            For I = 1 To Len(S)
               Temp = Temp & Format(Hex(Asc(Mid(S, I, 1))), "00")
            Next I
            StrToHex = Temp
         End If
End Function

Ce module va convertir une colonne texte en hexadécimal.
Ensuite utilise le code suivant pour tes requêtes
SELECT distinct StrToHex(Description) as Hexa , Description
FROM coord_mailles
SELECT *
FROM coord_mailles
WHERE StrToHex(Description) = StrToHex('AA1')
SELECT COUNT(*) , StrToHex(Description), Description
FROM coord_mailles
GROUP BY StrToHex(Description) , Description

A plus
1
Laaris Messages postés 130 Date d'inscription   Statut Membre Dernière intervention   73
 
Merci beaucoup, je vais essayer ça.


EDIT: ça fonctionne mais c'est très long à exécuter, tant pis ça m'aide bien, encore merci

0
bong03 Messages postés 43 Date d'inscription   Statut Membre Dernière intervention   2
 
Bonjour,

Je crois qu'il existe une option de SQL qui indique si SQL (les requêtes) sont "case sensitive". Mais je ne me rappelle plus laquelle....
0