Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Ekspresi reguler untuk memvalidasi nama tabel SQL Server

Regex yang dijelaskan dalam tautan seharusnya:

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

Perhatikan bahwa secara umum Anda harus menyematkan nama tabel di [...] , karena aturan 3 (jadi SELECT * FROM [SET] adalah kueri yang valid, karena, sementara SET adalah kata kunci yang dicadangkan, Anda dapat "melarikannya" dengan [...] )

Perhatikan bahwa di halaman tertaut, aturannya tidak lengkap:

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

  1. Pengidentifikasi tidak boleh berupa kata yang dicadangkan Transact-SQL. SQL Server mencadangkan versi huruf besar dan huruf kecil dari kata-kata yang dicadangkan. Saat pengidentifikasi digunakan dalam pernyataan Transact-SQL, pengidentifikasi yang tidak mematuhi aturan ini harus dipisahkan dengan tanda kutip ganda atau tanda kurung . Kata-kata yang dicadangkan bergantung pada tingkat kompatibilitas database. Level ini dapat diatur dengan menggunakan pernyataan ALTER DATABASE.

Dan mereka lupa:https://msdn.microsoft.com/en-us /library/ms174979.aspx

Aturan yang saya tulis adalah untuk tabel "penuh", bukan untuk tabel sementara, dan tidak menyertakan nama skema.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Trik penyetelan performa favorit

  2. BULK INSERT hilang baris terakhir?

  3. Pemicu riwayat tabel di SQL Server?

  4. gema gambar sesuai dengan kondisi

  5. Pivot Dinamis Dibutuhkan dengan Row_Number()