Ответ 1
В конечном итоге каждая строка является допустимым именем столбца, когда она заключена в двойные кавычки (MySQL может не подчиняться этому правилу в зависимости от конфигурации. Он не использует двойные кавычки в качестве котировок идентификатора в установке по умолчанию).
Однако, если вы хотите быть кросс-платформой (как предлагают различные теги СУБД), вы должны проверить наименьший общий знаменатель.
В руководстве PostgreSQL есть хорошее определение:
Идентификаторы SQL и ключевые слова должны начинаться с буквы (a-z, а также букв с диакритическими знаками и нелатинских букв) или подчеркивания (_). Последующие символы в идентификаторе или ключевом слове могут быть буквами, символами подчеркивания, цифрами (0-9) или знаками доллара ($). Обратите внимание, что знаки доллара не допускаются в идентификаторах в соответствии с буквой стандарта SQL, поэтому их использование может сделать приложения менее переносимыми
Итак, вы должны проверить следующее с регулярным выражением:
- начинается с буквы
- содержит только символы (буквы) и цифры и символ подчеркивания
Итак, регулярное выражение, подобное приведенному ниже, должно охватывать это:
^[a-zA-Z_][a-zA-Z0-9_]*$
Поскольку SQL не чувствителен к регистру (если не используются двойные кавычки) допустимы буквы верхнего и нижнего регистра.