In definitiva, ogni stringa è un nome di colonna valido una volta racchiusa tra virgolette doppie (MySQL potrebbe non obbedire a tale regola a seconda della configurazione. Non utilizza le virgolette doppie come virgolette identificative nell'installazione predefinita).
Tuttavia, se vuoi essere multipiattaforma (come suggeriscono i diversi tag DBMS), dovresti controllare il minimo comune denominatore.
Il manuale di PostgreSQL ha una bella definizione di questo:
Quindi dovresti controllare quanto segue con un'espressione regolare:
- inizia con una lettera
- contiene solo caratteri (lettere) e cifre e un trattino basso
Quindi un'espressione regolare come la seguente dovrebbe coprire questo:
^[a-zA-Z_][a-zA-Z0-9_]*$
Poiché SQL non fa distinzione tra maiuscole e minuscole (a meno che non vengano utilizzate virgolette doppie), sono consentite lettere maiuscole e minuscole.