Non sono riuscito a trovare alcuna funzione come isupper
o islower
in postgresql. Quello di cui ho realmente bisogno è selezionare tutti i record da una tabella, dove una delle colonne contiene parole maiuscole (ma non maiuscole). Cioè, il primo simbolo di ogni parola è in maiuscolo e il secondo è in minuscolo. Le parole possono essere scritte in qualsiasi lingua.Come determinare se un charater è maiuscolo o minuscolo in postgresql?
risposta
Che dire semplicemente selezionando le righe in cui il caso della prima lettera nella colonna non è uguale alla versione in minuscolo della prima lettera nella colonna?
Qualcosa di simile:
SELECT * FROM table
WHERE SUBSTRING(col FROM 1 FOR 1) != LOWER(SUBSTRING(col FROM 1 FOR 1))
In teoria, quanto sopra dovrebbe prendere il database charset/locale in considerazione pure.
Dal postgresql
è case sensitive per i confronti di stringhe, BobG risposta è meglio
Un'altra soluzione potrebbe essere quella di utilizzare ascii con string functions
Ti piace questa
SELECT *
FROM yourTable
WHERE (ascii(LEFT(yourColumn), 1) BETWEEN 65 AND 90)
AND (ascii(SUBSTRING(yourColumn from 2 for 1), 1) BETWEEN 97 AND 122)
quando è tra il 65 e il 90 è una lettera maiuscola come potete vedere nella tabella ascii Ho collegato
se E 'tra 97 e 122 è in minuscolo
Questa soluzione è buona, ma non funziona per russo, cinese e altre lingue non ascii;) –
È possibile utilizzare Postgres regexp per verificare la vostra condizione specifica:
select * from sample
where col ~ E'^[[:upper:]][^[:upper:]]'
Potreste usare E'^[[:upper:]][[:lower:]]'
se il secondo carattere deve essere alpha minuscola invece che qualsiasi non-maiuscolo.
Se vuoi sapere se una stringa contiene almeno un carattere minuscolo quindi è possibile utilizzare la funzione superiore [superiore (mystr) = mystr]:
dbname=> select upper('AAbbCC')='AAbbCC';
?column?
----------
f
(1 row)
dbname=> select upper('AABBCC')='AABBCC';
?column?
----------
t
(1 row)
È possibile utilizzare la stessa logica per la verifica che una stringa contiene almeno un carattere maiuscolo con la funzione lower() sql.
Per motivi più complessi, è necessario utilizzare l'espressione regolare o la sottostringa come proposto dalle risposte precedenti.
- 1. regex maiuscolo in minuscolo
- 2. AutoMapper è sensibile al maiuscolo/minuscolo o insensibile?
- 3. Maiuscolo/minuscolo JFlex regex
- 4. Java è sensibile al maiuscolo/minuscolo?
- 5. Come posso cercare maiuscolo/minuscolo in pgrep?
- 6. XML è sensibile al maiuscolo/minuscolo?
- 7. Come configurare MySQL come maiuscolo/minuscolo
- 8. URL Struttura: Minuscolo VS Maiuscolo
- 9. Conversione in maiuscolo e minuscolo in Java
- 10. estensione del file è cambiare maiuscolo a minuscolo in CodeIgniter
- 11. Programma Java per verificare se un carattere è maiuscolo/minuscolo/numero/vocale
- 12. Perché Common Lisp non è sensibile al maiuscolo/minuscolo?
- 13. PostgreSQL forza i nomi in minuscolo?
- 14. nome file in minuscolo e maiuscolo
- 15. Ricerca sensibile al maiuscolo/minuscolo Lucene
- 16. Il tag dichiarazione XML è sensibile al maiuscolo/minuscolo?
- 17. Chiavi del dizionario sensibili al maiuscolo/minuscolo
- 18. Come dividere una stringa in maiuscolo e minuscolo in JavaScript?
- 19. maiuscolo mvc Modello vs modello minuscolo
- 20. La codifica percentuale dell'URL è sensibile al maiuscolo/minuscolo?
- 21. Python è sensibile al maiuscolo/minuscolo? '#' È un simbolo di commento in Python?
- 22. Come determinare se un triangolo Delaunay è interno o esterno?
- 23. Postgresql minuscolo per confrontare i dati
- 24. Il DN del LDAP non è sensibile al maiuscolo/minuscolo?
- 25. Perché PostgreSQL imposta tutto automaticamente in minuscolo?
- 26. Come rendere questa regola .htaccess non sensibile al maiuscolo/minuscolo?
- 27. Determinare se O/S è Windows 7
- 28. Postgresql: testo minuscolo automatico mentre (o prima) inserimento in una colonna
- 29. File R in maiuscolo e in minuscolo. Differenza?
- 30. Determinare se char è un numero o una lettera
Smart! Non ho pensato a questo perché sono abituato a MySQL che non è sensibile al maiuscolo/minuscolo per confronti tra stringhe – Marc
Ecco come ho fatto, è una soluzione per il mio particolare problema. –
@Marc: Forse sto leggendo male il tuo commento, ma quando ho postato la SELECT, ho testato la sintassi in MySQL invece di Postgres poiché non avevo un'istanza di Postgres a portata di mano (sapevo già che le funzioni LOWER/UPPER/SUBSTRING erano valido in Postgres). Ha funzionato bene in MySQL (v 5.1. Qualcosa), restituendo con successo una riga che conteneva 'Abc' ma non la riga contenente 'xyz'. – BobG