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

QUOTENAME()関数がSQL Server(T-SQL)でどのように機能するか

    SQL Serverでは、T-SQL QUOTENAME() 関数は、入力文字列を有効なSQLServer区切り識別子にするために区切り文字が追加されたUnicode文字列を返します。

    これは、データベースとそのオブジェクトを引用するために設計されました。

    この関数は2つの引数を受け入れます。入力文字列(必須)、および区切り文字(オプション)。

    構文

    構文は次のようになります:

    QUOTENAME ( 'character_string' [ , 'quote_character' ] )

    character_stringの場所 は入力文字列であり、 quote_character 区切り文字として使用する文字を指定するためのオプションの引数です。省略した場合、角かっこが区切り文字として使用されます。

    character_stringに注意してください sysnameです 128文字に制限されています。 128文字を超える入力は、NULLを返します。 。

    有効な区切り文字(オプションの quote_character の場合) 引数)は次のとおりです:

    • ` (バックティック)
    • ' (一重引用符)
    • " (二重引用符)
    • [] (左または右の括弧)
    • () (左または右のパランセシス)
    • <> (記号よりも小さいまたは大きい)
    • {} (左または右中括弧)

    例1-基本的な使用法

    仕組みの例を次に示します。

    SELECT QUOTENAME('cat[]dog') AS Result;

    結果:

    +-------------+
    | Result      |
    |-------------|
    | [cat[]]dog] |
    +-------------+
    

    例2–カスタム区切り文字

    別の区切り文字を指定する例を次に示します。

    SELECT QUOTENAME('cat[]dog', '}') AS Result;

    結果:

    +------------+
    | Result     |
    |------------|
    | {cat[]dog} |
    +------------+
    

    そして、真ん中の括弧を中括弧に変更するとどうなりますか:

    SELECT QUOTENAME('cat{}dog', '}') AS Result;

    結果:

    +-------------+
    | Result      |
    |-------------|
    | {cat{}}dog} |
    +-------------+
    

    例3–無効な入力文字列

    前述のように、入力文字列は sysname 、したがって、128文字に制限されています。 sysname nvarchar(128)と機能的に同等のシステム提供のユーザー定義データ型です。 、null許容ではないことを除いて。 sysname データベースオブジェクト名を参照するために使用されます。

    入力文字列が長すぎる場合は、次のようになります。

    SELECT QUOTENAME('This text is too long to be an input string for this function, because it contains more than 128 characters - too long for sysname.') AS Result;

    結果:

    +----------+
    | Result   |
    |----------|
    | NULL     |
    +----------+
    

    例4–無効な区切り文字

    無効な区切り文字を指定すると、次のようになります。

    SELECT QUOTENAME('cat[]dog', '!') AS Result;

    結果:

    +----------+
    | Result   |
    |----------|
    | NULL     |
    +----------+
    

    1. SQL ServerでのCAST()のしくみ

    2. レコードからHTMLタグを削除する

    3. Explainによって返される行がcount()と等しくないのはなぜですか?

    4. Pentaho Data Integration(Kettle)CommunityEditionからOracle12cデータベースに接続する