Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Regulärer Ausdruck zum Überprüfen des SQL Server-Tabellennamens

Der in der link sollte sein:

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

Beachten Sie, dass Sie im Allgemeinen den Namen der Tabelle in [...] einbetten müssen , wegen Regel 3 (also SELECT * FROM [SET] ist eine gültige Abfrage, weil während SET ein reserviertes Schlüsselwort ist, können Sie es mit [...] "escapen". )

Beachten Sie, dass die Regel auf der verlinkten Seite unvollständig ist:

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

  1. Der Bezeichner darf kein reserviertes Transact-SQL-Wort sein. SQL Server reserviert sowohl die Großbuchstaben- als auch die Kleinbuchstabenversion reservierter Wörter. Wenn Bezeichner in Transact-SQL-Anweisungen verwendet werden, müssen die Bezeichner, die diesen Regeln nicht entsprechen, durch doppelte Anführungszeichen oder eckige Klammern getrennt werden . Die reservierten Wörter hängen vom Kompatibilitätsgrad der Datenbank ab. Diese Ebene kann mit der ALTER DATABASE-Anweisung festgelegt werden.

Und sie haben vergessen:https://msdn.microsoft.com/en-us /library/ms174979.aspx

Die Regel, die ich geschrieben habe, gilt für "vollständige" Tabellen, nicht für temporäre Tabellen, und enthält keinen Schemanamen.