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

SQLのselectステートメントで列名として数値を渡します

    文字列リテラル値'5'を選択しています テーブルの各行:

    select 5 from mytable_name;
    

    そして、これはうまくいきます。 SELECTにあるからです 選択できるステートメント:

    • 列参照
    • あなたの場合のようなリテラル値。
    • 機能。
    • 値の式。
    • 式を選択します。

    標準SQLで定義されているとおり:

    更新:

    ただし、名前があなたの場合のような数字である列がある場合は、その中の値を次のように選択するために、その列をエスケープする必要があります。

     SELECT `143` FROM Table1;
    

    これにより、列143のすべての行が選択されます 。

    しかし、これ:

     SELECT 143 FROM Table1;
    

    テーブルで見つかった行ごとに文字列リテラル143を選択します。

    注意: 可能であれば、これらの列にこのように名前を付けないようにしてください。これを行わないことをお勧めします。ベストプラクティスです。

    SQLフィドルデモ

    更新2:

    143を選択した場合は注意してください または'143' 、または"143" これにより、リテラル値143が選択されます 列の日付ではありません。以下は同じです:

    SELECT 143 FROM Table1;
    SELECT '143' FROM Table1;
    SELECT "143" FROM Table1;
    

    これらすべてのSELECT sは列のデータを選択せず​​、リテラル値143を選択します 列データではありません。このデモを見る:

    デモ

    2つで列名をエスケープする必要があります:

    ``
    

    このように:

    SELECT `143` FROM table1;
    

    ない:

    SELECT '143' FROM table1'
    

    私がここでしたように:

    適切なデモ



    1. 範囲を含む場合、インデックスの最初のカーディナリティ列が高くなりますか?

    2. Mysqlはcsv文字列のwhereフィールドを選択します

    3. Oracleデータベースでパラメータを使用してPL/SQLストアドプロシージャを作成する方法

    4. MySQLが誤った文字列値エラーをスローする