sql >> データベース >  >> RDS >> Sqlserver

SQL Server テーブル名を検証するための正規表現

    link

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

    一般に、テーブルの名前を [...] に埋め込む必要があることに注意してください 、ルール 3 のため (したがって SELECT * FROM [SET] while SET であるため、有効なクエリです。 [...] で「エスケープ」できます。 )

    リンクされたページでは、ルールが不完全であることに注意してください:

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

    1. 識別子は、Transact-SQL の予約語であってはなりません。 SQL Server では、予約語の大文字バージョンと小文字バージョンの両方が予約されています。 Transact-SQL ステートメントで識別子を使用する場合、これらの規則に準拠しない識別子は、二重引用符または角かっこで区切る必要があります .予約語は、データベースの互換性レベルによって異なります。このレベルは、ALTER DATABASE ステートメントを使用して設定できます。

    そして彼らは次のことを忘れていました:https://msdn.microsoft.com/en-us /library/ms174979.aspx

    私が作成したルールは、一時テーブルではなく「完全な」テーブル用であり、スキーマ名は含まれません。




    1. 警告:長いセマフォ待機

    2. Python:mysqlテーブルから選択する場合、タプルインデックスはstrではなく整数である必要があります

    3. 1年前のタイムスタンプをクエリするVB.netSQLステートメント

    4. 現在のセッションでOracleトリガーを無効にできますか?