Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Регулярен израз за валидиране на име на таблица на SQL Server

Регулярният израз, описан в връзка трябва да бъде:

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

Имайте предвид, че по принцип ще трябва да вградите името на таблицата в [...] , поради правило 3 (така SELECT * FROM [SET] е валидна заявка, защото докато SET е запазена ключова дума, можете да я "избягате" с [...] )

Имайте предвид, че в свързаната страница правилото е непълно:

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

  1. Идентификаторът не трябва да бъде запазена дума на Transact-SQL. SQL Server запазва версиите с главни и малки букви на запазените думи. Когато се използват идентификатори в Transact-SQL изрази, идентификаторите, които не отговарят на тези правила, трябва да бъдат разделени с двойни кавички или скоби . Думите, които са запазени, зависят от нивото на съвместимост на базата данни. Това ниво може да бъде зададено чрез израза ALTER DATABASE.

И те забравиха:https://msdn.microsoft.com/en-us /library/ms174979.aspx

Правилото, което написах е за "пълни" таблици, а не за временни таблици и не включва име на схема.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Неправилен синтаксис близо до ')', извикващ съхранена процедура с GETDATE

  2. Преобразувайте „smalldatetime“ в „datetimeoffset“ в SQL Server (T-SQL примери)

  3. Как да проверите съвместимостта на базата данни на SQL Server, след като sp_dbcmptlevel е остарял?

  4. SQL сървър версия 655

  5. Добавете потребител на Windows към локален SQL сървър с PowerShell