In einem .NET-Projekt muss ich überprüfen, ob eine Zeichenfolge ein gültiger Microsoft SQL Server 2005-Parameterbezeichner ist.
Ejemplo: SELECT * FROM table WHERE column = @parameter
Gibt es eine Methode der Laufzeitklasse, um eine Zeichenkette als Parameter zu validieren, oder gibt es einen regulären Ausdruck, der die Regeln verifiziert? (siehe unten)
Aus der Dokumentation über Identifikatoren sollten die Parameter diesen allgemeinen Bezeichnerregeln entsprechen:
- Das erste Zeichen muss eines der folgenden sein: * Ein Buchstabe gemäß der Definition des Unicode-Standards 3.2. Die Unicode-Definition von Buchstaben umfasst Lateinische Zeichen von a bis z, von A bis Z, und auch Buchstaben Zeichen aus anderen Sprachen. * Der Unterstrich (_), das At-Zeichen (@), oder Zahlenzeichen (#).
Bestimmte Symbole am Anfang eines Bezeichners haben in SQL Server eine besondere Bedeutung. A regulärer Bezeichner, der mit dem at-Zeichen beginnt, bezeichnet immer eine lokale Variable oder einen Parameter und kann nicht als Name eines anderen Objekttyps verwendet Objekts verwendet werden. Ein Bezeichner, der mit einem einem Zahlenzeichen beginnt, bezeichnet eine temporäre Tabelle oder Prozedur. Ein Bezeichner, der mit einem doppelten Zahlenzeichen (##) beginnt beginnt, kennzeichnet ein globales temporäres Objekt. Obwohl das Zahlenzeichen oder doppelte Nummernzeichen verwendet werden können, um Namen von anderen Objekttypen beginnen Objekten verwendet werden können, empfehlen wir dies nicht Praxis. Einige Transact-SQL-Funktionen haben Namen, die mit doppelten at Zeichen (@@) beginnen. Zur Vermeidung von Verwechslungen mit diesen Funktionen zu vermeiden, sollten Sie keine Namen verwenden, die mit @@ beginnen.- Nachfolgende Zeichen können die folgenden sein: * Buchstaben gemäß der Definition in der Unicode-Norm 3.2. * Dezimalzahlen entweder aus Basic lateinischen oder anderen nationalen Skripten. * Das at-Zeichen, das Dollarzeichen ($), die Zahl Zeichen oder Unterstrich.
- Der Bezeichner darf kein reserviertes Transact-SQL-Wort sein. SQL Server reserviert sowohl den Großbuchstaben als auch den Kleinbuchstaben von reservierten Wörtern.
- Eingebettete Leer- oder Sonderzeichen sind nicht erlaubt.
- Zusätzliche Zeichen sind nicht erlaubt.
Bei der Verwendung von Bezeichnern in Transact-SQL-Anweisungen verwendet werden, werden die Bezeichner, die nicht den Regeln entsprechen Regeln entsprechen, müssen durch doppelte Anführungszeichen oder Klammern abgegrenzt werden.
Da ich nur Parameter validieren möchte, müssen die Bezeichner mit einem @-Zeichen beginnen und dürfen nicht abgegrenzt werden.
0 Stimmen
Versuchen Sie, SQL von einer Anwendung aus zu analysieren, oder wollen Sie die SQL-Anweisung anschließend ausführen?