9
votes

Comment trouver toutes les cordes majuscules dans une table mysql?

Je pensais que d'abord cela est trivial. Puis la pensée « binaire » pourrait le faire. Je ne suis pas sûr à ce stade.

Name
----
John
MARY
Kin
TED


0 commentaires

6 Réponses :


6
votes

2 commentaires

Cela dépend de la collecte et le type de données. Si le type de données est non-binaire et la collecte est, par exemple, latin1, des comparaisons de chaînes seront insensibles à la casse. Je crois donc que la réponse de Mark Byers est la plus précise à ce jour.


Binary est essentiel dans ce cas (atleast mon cas). upvoting encore pour plus d'informations.



2
votes

Essayez ceci:

select name from table where name=upper(name);


1 commentaires

Cela fonctionne uniquement avec les types de données binaires ou le classement correct.



0
votes

Ce sera également le retour des valeurs numériques, mais ce regard ne marche pas être un problème pour votre nom de colonne.

SELECT * FROM names WHERE 

ASCII(name) = ASCII(Upper(name))


1 commentaires

Cela fonctionne uniquement avec les types de données binaires ou le classement correct.



37
votes

Si votre collation est insensible à la casse, vous devez utiliser un BINARY code> comparaison:

SELECT *
FROM yourtable
WHERE Name = BINARY UPPER(Name)


1 commentaires

Binaire est la clé ici! Merci!



1
votes

Essayez ceci:

SELECT Name
FROM   table
WHERE  Name COLLATE latin1_general_cs LIKE UPPER(Name)
;


0 commentaires

1
votes

Utilisez ci-dessous:

SELECT name FROM table WHERE name = BINARY UPPER(column_name);


0 commentaires