Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Espressione regolare per la convalida del nome della tabella di SQL Server

La regex descritta in link dovrebbe essere:

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

Nota che in generale dovrai incorporare il nome della tabella in [...] , a causa della regola 3 (quindi SELECT * FROM [SET] è una query valida, perché, mentre SET è una parola chiave riservata, puoi "scapparla" con il [...] )

Nota che nella pagina collegata la regola è incompleta:

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

  1. L'identificatore non deve essere una parola riservata Transact-SQL. SQL Server riserva le versioni maiuscole e minuscole delle parole riservate. Quando gli identificatori vengono utilizzati nelle istruzioni Transact-SQL, gli identificatori che non rispettano queste regole devono essere delimitati da virgolette o parentesi quadre . Le parole riservate dipendono dal livello di compatibilità del database. Questo livello può essere impostato utilizzando l'istruzione ALTER DATABASE.

E hanno dimenticato:https://msdn.microsoft.com/en-us /libreria/ms174979.aspx

La regola che ho scritto è per le tabelle "complete", non per le tabelle temporanee e non include il nome dello schema.