Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Expression régulière pour valider le nom de la table SQL Server

L'expression régulière décrite dans le lien devrait être :

var regex = new Regex(@"^[\p{L}_][\p{L}\p{N}@$#_]{0,127}$");

Notez qu'en général vous devrez intégrer le nom de la table dans [...] , à cause de la règle 3 (donc SELECT * FROM [SET] est une requête valide, car, tandis que SET est un mot-clé réservé, vous pouvez "l'échapper" avec le [...] )

Notez que dans la page liée la règle est incomplète :

Depuis https://msdn.microsoft.com/en-us/library/ ms175874.aspx

  1. L'identifiant ne doit pas être un mot réservé Transact-SQL. SQL Server réserve à la fois les versions majuscules et minuscules des mots réservés. Lorsque des identifiants sont utilisés dans des instructions Transact-SQL, les identifiants qui ne respectent pas ces règles doivent être délimités par des guillemets doubles ou des crochets . Les mots réservés dépendent du niveau de compatibilité de la base de données. Ce niveau peut être défini à l'aide de l'instruction ALTER DATABASE.

Et ils ont oublié :https://msdn.microsoft.com/en-us /bibliothèque/ms174979.aspx

La règle que j'ai écrite concerne les tables "complètes", pas les tables temporaires, et n'inclut pas le nom du schéma.