sql >> Database >  >> RDS >> Sqlserver

Reguliere expressie voor het valideren van de SQL Server-tabelnaam

De regex beschreven in de link zou moeten zijn:

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

Houd er rekening mee dat u in het algemeen de naam van de tabel moet insluiten in [...] , vanwege regel 3 (dus SELECT * FROM [SET] is een geldige zoekopdracht, omdat, terwijl SET is een gereserveerd trefwoord, u kunt het "ontsnappen" met de [...] )

Merk op dat op de gelinkte pagina de regel onvolledig is:

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

  1. De identifier mag geen door Transact-SQL gereserveerd woord zijn. SQL Server reserveert zowel de hoofdletters als de kleine letters van gereserveerde woorden. Wanneer id's worden gebruikt in Transact-SQL-instructies, de id's die niet aan deze regels voldoen, moeten worden gescheiden door dubbele aanhalingstekens of haakjes . De woorden die zijn gereserveerd, zijn afhankelijk van het compatibiliteitsniveau van de database. Dit niveau kan worden ingesteld met behulp van de instructie ALTER DATABASE.

En ze vergaten:https://msdn.microsoft.com/en-us /bibliotheek/ms174979.aspx

De regel die ik heb geschreven is voor "volledige" tabellen, niet voor tijdelijke tabellen, en bevat geen schemanaam.




  1. Krijg een raar probleem met de TO_NUMBER-functie in Oracle

  2. Zou een beperking van de unieke sleutel met veel velden de MySQL-prestaties schaden?

  3. Nieuwe manier om bestanden te kopiëren in SQL Server 2019

  4. Hoe kan ik een string converteren naar een float in mysql?