Comment faire pour déterminer si un caractère est en majuscules ou en minuscules dans postgresql?
Je n'ai pas réussi à trouver toute fonction comme isupper
ou islower
dans postgresql.
Ce que j'ai vraiment besoin de faire est de sélectionner tous les enregistrements d'une table, où l'une des colonnes contient des capitized (mais pas les majuscules) mots. Le premier symbole de chaque mot est en majuscule, et le deuxième est en minuscule. Les mots peuvent être écrits dans n'importe quelle langue.
OriginalL'auteur Pupkov-Zadnij | 2012-12-04
Vous devez vous connecter pour publier un commentaire.
Ce sujet il vous suffit de sélectionner les lignes où le cas de la première lettre de la colonne n'est pas égale à la version minuscule de la première lettre dans la colonne?
Quelque chose comme:
En théorie, le dessus doit prendre le charset de la base de données/paramètres régionaux en compte.
C'est la façon dont je l'ai fait, c'est une solution pour mon problème particulier.
Peut-être que je suis une erreur de lecture de votre commentaire, mais quand j'ai posté le SÉLECTIONNER, j'ai testé la syntaxe de MySQL au lieu de Postgres depuis je n'ai pas de Postgres exemple pratique (je le savais déjà INFÉRIEURE/SUPÉRIEURE/SUBSTRING fonctions étaient valables dans Postgres). Il a très bien fonctionné dans MySQL (v 5.1.quelque chose), a réussi à retourner une ligne qui contiennent "Abc", mais pas la ligne contenant 'xyz.'
Désolé, je n'étais pas clair. Cela dépend de votre collation.By par défaut c'est Latin1 et latin1_swedish_ci qui sont insensibles à la casse. dev.mysql.com/doc/refman/5.0/en/case-sensitivity.html
Intelligemment simple.
OriginalL'auteur BobG
Vous pouvez utiliser Postgres regexp pour tester votre condition spécifique:
Vous pouvez utiliser
E'^[[:upper:]][[:lower:]]'
si le deuxième personnage doit être en minuscules alpha au lieu de majuscules.OriginalL'auteur dbenhur
Depuis
postgresql
est sensible à la casse pour les comparaisons de chaînes, BobG réponse est mieuxUne autre solution serait d'utiliser ascii avec les fonctions de chaîne
Comme ce
quand c'est entre 65 et 90 c'est une lettre majuscule, comme vous pouvez le voir dans la table ascii je l'ai lié
si c'est entre 97 et 122 c'est moins le cas
OriginalL'auteur Marc
Si vous voulez savoir si une chaîne contient au moins une minuscule, alors vous pouvez utiliser la fonction upper [supérieure(mystr)=mystr]:
Vous pouvez utiliser la même logique pour vérifier qu'une chaîne de caractères contient au moins un caractère majuscule avec le bas() fonction sql.
Pour plus d'motif compliqué, vous devrez utiliser l'expression régulière ou une sous-chaîne, tel que proposé par les réponses précédentes.
OriginalL'auteur Kemin Zhou