.NETプロジェクトでは、文字列が有効なMicrosoft SQL Server 2005パラメータ識別子であるかどうかを確認する必要があります。.NETまたは正規表現でMSSQL識別子(パラメータ)を検証する
例:SELECT * FROM table WHERE column = @parameter
パラメータであるため、文字列を検証するためのランタイムクラスのメソッドがあり、またはルールを確認する正規表現がありますか?(下記参照)
From the documentation on identifiersは、パラメータはこれらの一般的な識別子の規則に従わなければならない:Unicode標準3.2によって定義さ よう*手紙:
- 最初の文字は、次のいずれかでなければなりません。 文字のUnicode定義には、aからzまでの ラテン文字、AからZまでの 、および他の言語の文字 文字が含まれています。 * アンダースコア(_)、アットマーク(@)、または の番号記号(#)。
特定のシンボル は、識別子の先頭に という特別な意味を持っています。 A で始まる通常の識別子アットマークは常にローカルの 変数またはパラメータを表し、その他のタイプの オブジェクトの名前には を使用できません。数字が で始まる識別子は、一時的な 表またはプロシージャーを示します。 が二重番号記号(##)で始まる識別子 は、グローバルな一時オブジェクトを示します。 他のタイプの オブジェクトの名前を始めるには、番号記号または の数字記号を使用して の名前を使用することはできますが、この の練習はおすすめしません。いくつかのTransact-SQL関数 は、doubleで始まる名前( 記号(@@)を持ちます。 これらの関数との混乱を避けるため、@@で始まる名前を に使用しないでください。- 次の文字には、次の文字を含めることができます。*定義された文字 Unicode Standard 3.2。 * ベーシック ラテン文字またはその他の国語スクリプトの小数。 * アットマーク、ドル記号($)、数字 記号、またはアンダースコア。
- 識別子はTransact-SQL予約語であってはなりません。 SQL Server は、予約語の大文字と小文字の両方を予約します( )。
- 埋め込みスペースまたは特殊文字は使用できません。
- 補助文字は使用できません。
識別子が のTransact-SQLステートメントで使用されているは、 これらの規則に準拠していない 識別子は 二重引用符または括弧で区切らなければなりません。
私はパラメータのみを検証したいので、識別子は@記号で始まらなければならず、区切られてはいけません。
いくつかのアプリケーションからSQLを解析しようとしていますか、それとも後でSQL文を実行しますか? – gbn