最终,每一个字符串都是一个有效的列名,只要用双引号括起来(MySQL可能不遵守这个规则,具体取决于配置.在默认安装中,它不使用双引号作为标识符引号).
然而,如果你想跨平台(正如不同的DBMS标签所建议的那样),你应该判断最小公分母.
其中PostgreSQL manual has a nice definition个:
SQL标识符和关键字必须以字母(a-z,但也包括带有变音符号和非拉丁字母的字母)或下划线(382;)开头.标识符或关键字中的后续字符可以是字母、下划线、数字(0-9)或美元符号($).请注意,根据SQL标准的字母,标识符中不允许使用美元符号,因此使用美元符号可能会降低应用程序的可移植性
因此,您应该使用正则表达式判断以下内容:
下面这样的正则表达式应该包括:
^[a-zA-Z_][a-zA-Z0-9_]*$
由于SQL不区分大小写(除非使用双引号),因此允许使用大写和小写字母.