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

* varchar *セルから数値を抽出し、純粋なmysqlでそれらを使用して計算を行います

    確かに実行できますが、SQLはアトミック値の公理に基づいて設計されています(つまり、第一正規形 )。フィールドを分割する必要はほとんどありません。適切に設計されたデータベースで使用する必要があるのは、日付フィールドの月または年だけで作業したい日付を使用する場合のみです。確かに、このコアコンセプトに違反する、一部の馬鹿が設計したデータベースを見つけることはできますが、これらの設計をどのように処理するかを理解することから始めるのは悪い考えです。

    さらに、「そのセル239に格納する」の最後のステップでは、データベースをスプレッドシートのように表示しているように思われます。彼らはそうではありません。データベースのもう1つのコアコンポーネントは、行の順序は重要ではないということです。一方、フィールドは常に同じ行の他のフィールドに関連しています。いずれかのフィールドの値を、そのレコードのIDフィールドが239の値に設定することもできますが、通常、レコードが239番目であるという事実は気になりません。

    そうは言っても、これがあなたが望むことをするクエリです:

    仮定:フィールドの形式は「11a22b」です。つまり、2桁の数字、文字、さらに2桁の数字、場合によってはスペースと文字「b」が続きます。

    SELECT CAST(SUBSTRING(Value,1,2) AS INT) 
        * CAST(SUBSTRING(Value,3,2) AS INT) 
        + CASE RIGHT(Value,1) WHEN 'b' THEN -1 ELSE 0 END
    FROM MyTable
    


    1. MySQLの低速クエリログロギング高速クエリ

    2. mysqldumpを使用したmysqldbバックアップの「ビュー」を無視する

    3. MySQLテーブルのランクを更新します

    4. pipを使用してPython用のmysqlモジュールをインストールします