web-dev-qa-db-fra.com

Comment rechercher des lignes dont la valeur contient une lettre minuscule

Je recherche une requête SQL qui me donne toutes les lignes où ColumnX contient une lettre minuscule (par exemple, "1234aaaa5789"). Idem pour les majuscules.

49
ripper234
SELECT * FROM my_table 
WHERE UPPER(some_field) != some_field

Cela devrait fonctionner avec des personnages amusants comme åäöøüæï. Vous devrez peut-être utiliser un classement utf-8 spécifique à la langue pour la table.

76
geon
SELECT * FROM my_table WHERE my_column = 'my string'
COLLATE Latin1_General_CS_AS

Cela rendrait une recherche sensible à la casse.


EDIT

Comme indiqué dans kouton 's commentaire ici et tormuto 's commentaire ici celui qui fait face à un problème avec le classement ci-dessous

COLLATE Latin1_General_CS_AS

doit d'abord vérifier le classement par défaut pour son serveur SQL, sa base de données respective et la colonne en question; et transmettez le classement par défaut avec l'expression de requête. La liste des classements peut être trouvée ici .

42
Devraj Gadhavi
SELECT * FROM Yourtable 
WHERE UPPER([column_NAME]) COLLATE Latin1_General_CS_AS !=[Column_NAME]
18
NBS

pour rechercher toutes les lignes en minuscule

SELECT *
FROM Test
WHERE col1 
LIKE '%[abcdefghijklmnopqrstuvwxyz]%'
collate Latin1_General_CS_AS

Merci Manesh Joseph

9
El David

Le serveur IN MS SQL utilise la clause COLLATE.

SELECT Column1
FROM Table1
WHERE Column1 COLLATE Latin1_General_CS_AS = 'casesearch'

L'ajout de COLLATE Latin1_General_CS_AS rend la recherche sensible à la casse.

Le classement par défaut de l'installation SQL Server SQL_Latin1_General_CP1_CI_AS n'est pas sensible à la casse.

Pour modifier le classement de la colonne de n'importe quelle table, exécutez en permanence la requête suivante.

ALTER TABLE Table1
ALTER COLUMN Column1 VARCHAR(20)
COLLATE Latin1_General_CS_AS

Pour connaître le classement de la colonne pour n'importe quelle table, exécutez la procédure stockée suivante.

EXEC sp_help DatabaseName

Source: SQL SERVER - Assembler - Recherche de requête SQL sensible à la casse

7
subhash
mysql> SELECT '1234aaaa578' REGEXP '^[a-z]';
2
Elzo Valugi

Voici comment je l'ai fait pour la table encodée utf8 et la colonne utf8_unicode_ci, qui ne semble pas avoir été publiée exactement:

SELECT *
FROM table
WHERE UPPER(column) != BINARY(column)
2
martincarlin87

J'ai fait quelque chose comme ça pour découvrir les minuscules. 

SELECT *
FROM YourTable
  where BINARY_CHECKSUM(lower(ColumnName)) = BINARY_CHECKSUM(ColumnName)
0
Mahib

--Pour SQL

SELECT *
FROM tablename
WHERE tablecolumnname LIKE '%[a-z]%';
0
user7912960

Dans Posgresql, vous pouvez utiliser ~

Par exemple, vous pouvez rechercher toutes les lignes qui ont col_a avec une lettre en minuscule.

select * from your_table where col_a '[a-z]';

Vous pouvez modifier l'expression Regex selon vos besoins.

Cordialement,

0
Nicolas Finelli

Je ne suis pas un expert sur MySQL, je vous suggère de regarder REGEXP.

SELECT * FROM MyTable WHERE ColumnX REGEXP '^[a-z]';
0
CJM

Je dois ajouter BINARY à la ColumnX, pour obtenir le résultat en tant quesensible à la casse

SELECT * FROM MyTable WHERE BINARY(ColumnX) REGEXP '^[a-z]';