sql >> Base de Datos >  >> RDS >> Sqlserver

Expresión regular para validar el nombre de la tabla de SQL Server

La expresión regular descrita en enlace debería ser:

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

Tenga en cuenta que, en general, deberá incrustar el nombre de la tabla en [...] , debido a la regla 3 (entonces SELECT * FROM [SET] es una consulta válida, porque, mientras SET es una palabra clave reservada, puede "escaparla" con [...] )

Tenga en cuenta que en la página vinculada la regla está incompleta:

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

  1. El identificador no debe ser una palabra reservada de Transact-SQL. SQL Server reserva las versiones en mayúsculas y minúsculas de las palabras reservadas. Cuando se utilicen identificadores en sentencias Transact-SQL, los identificadores que no cumplan con estas reglas deberán estar delimitados por comillas dobles o corchetes . Las palabras que están reservadas dependen del nivel de compatibilidad de la base de datos. Este nivel se puede establecer mediante la instrucción ALTER DATABASE.

Y se olvidaron:https://msdn.microsoft.com/en-us /library/ms174979.aspx

La regla que he escrito es para tablas "completas", no para tablas temporales, y no incluye el nombre del esquema.