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

SQL名のスラッシュをエスケープしますか?エスケープすることはできますが、SQLはそれが複数の列であると信じています

    SQL Serverでは、識別子は角かっこを使用して区切ることができます。例:

    SELECT [gallons/units] ...
    

    MySQLでは、識別子はバッククォートを使用して区切ることができます。例:

    SELECT `gallons/units` ...
    

    (注:MySQL SQL_MODEの場合 ANSI_QUOTESが含まれています 、その後、二重引用符は、Oracleが二重引用符を処理する方法と同様に、識別子の区切り文字として扱われます。この設定がない場合、二重引用符は文字列リテラルの区切り文字として処理されます。 ANSI_QUOTESを使用 含まれているSQL_MODE"gallons/units" 識別子(列名)として解釈されます。 ANSI_QUOTESなし 、MySQLは、一重引用符で囲まれているかのように、文字列リテラルとして認識します。)

    フォローアップ:

    エラー"operand should contain only 1 column(s)"に関する限り 、これは通常、クエリセマンティクスの問題であり、識別子のエスケープの問題ではありません。

    SELECTリストのサブクエリは、単一の式のみを返すことができます。たとえば、これはエラーをスローします:

    Query: SELECT 'foo' , ( SELECT 'fee' AS fee, 'fi' AS fi )
    
    Error Code: 1241
    Operand should contain 1 column(s)
    


    1. SQL Server - ストアド プロシージャ内のネストされたトランザクション

    2. 正規表現を使用してフィールドを更新するPostgresqlクエリ

    3. 列と複数の行で1つの行の複数の列にグループ化する

    4. データベースにテーブルが見つかりません