Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Expressão regular para validar o nome da tabela do SQL Server


O regex descrito no link deveria estar:
var regex = new Regex(@"^[\p{L}_][\p{L}\p{N}@$#_]{0,127}$");

Observe que, em geral, você terá que incorporar o nome da tabela em [...] , por causa da regra 3 (portanto SELECT * FROM [SET] é uma consulta válida, porque, enquanto SET é uma palavra-chave reservada, você pode "escapar" com o [...] )

Observe que na página vinculada a regra está incompleta:

De https://msdn.microsoft.com/en-us/library/ ms175874.aspx
  1. O identificador não deve ser uma palavra reservada Transact-SQL. O SQL Server reserva as versões maiúsculas e minúsculas das palavras reservadas. Quando identificadores são usados ​​em instruções Transact-SQL, os identificadores que não obedecem a essas regras devem ser delimitados por aspas duplas ou colchetes . As palavras reservadas dependem do nível de compatibilidade do banco de dados. Esse nível pode ser definido usando a instrução ALTER DATABASE.

E eles esqueceram:https://msdn.microsoft.com/en-us /library/ms174979.aspx

A regra que escrevi é para tabelas "completas", não para tabelas temporárias e não inclui o nome do esquema.