sql >> Database teknologi >  >> RDS >> Sqlserver

Regulært udtryk til validering af SQL Server-tabelnavn

Regex beskrevet i link skal være:

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

Bemærk, at du generelt bliver nødt til at indlejre navnet på tabellen i [...] , på grund af regel 3 (så SELECT * FROM [SET] er en gyldig forespørgsel, fordi, mens SET er et reserveret nøgleord, kan du "undgå" det med [...] )

Bemærk, at reglen på den linkede side er ufuldstændig:

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

  1. Id'et må ikke være et Transact-SQL-reserveret ord. SQL Server reserverer både store og små bogstaver af reserverede ord. Når identifikatorer bruges i Transact-SQL-sætninger, skal de identifikatorer, der ikke overholder disse regler, være afgrænset af dobbelte anførselstegn eller parenteser . De ord, der er reserveret, afhænger af databasekompatibilitetsniveauet. Dette niveau kan indstilles ved at bruge ALTER DATABASE-sætningen.

Og de glemte:https://msdn.microsoft.com/en-us /library/ms174979.aspx

Reglen, som jeg har skrevet, er for "fulde" tabeller, ikke for midlertidige tabeller, og inkluderer ikke skemanavn.




  1. Opret en database i SQLite

  2. Sådan opretter du en MySQL-database i cPanel

  3. Indsæt resultaterne af mysql kommandolinjeforespørgsel i bash script variabel

  4. Undgå SQL-injektion ved hjælp af mysql_real_escape_string og stripslashes