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

mySQLのREPLACE関数を使用したインデックス列

    計算列<のようなものはありません。 / a> MySQLで。

    インデックス検索を高速化するために値をフォーマットする場合は、おそらくトリガーを使用する必要があります。実際のところ、私は今朝ほぼ同じ質問に答えました。https://stackoverflow.comを参照してください。 / a / 18047511/2363712 同様の例について。

    あなたの場合、それはそのようなものにつながるでしょう:

    CREATE TABLE `table_a`(`column_1` VARCHAR(255), ... ,
                           `column_1_fmt` VARCHAR(255),
                           INDEX(`column_1_fmt`));
    
    CREATE TRIGGER ins_table_a BEFORE INSERT ON `table_a`
    FOR EACH ROW
        SET NEW.`column_1_fmt` = REPLACE(NEW.column_1, '-', '');
    
    CREATE TRIGGER upd_table_a BEFORE UPDATE ON `table_a`
    FOR EACH ROW
        SET NEW.`column_1_fmt` = REPLACE(NEW.column_1, '-', '');
    

    次に、column_1_fmtを使用します 値を検索する/必要な形式の値に参加する。

    あなたについて 特別な必要性(ダッシュの削除 -ある種のシリアル/参照番号から?)。多分あなたは問題を逆転させるべきです。これらの値を標準形(ダッシュなし)として保存します。そして、SELECTに必要なダッシュを追加します 時間。




    1. intフィールドにバインドされたパラメーターとしてブールTrue-FalseをPDOステートメントに送信するとどうなりますか?

    2. 複数の列による行選択の順序

    3. ユニオンクエリの並べ替えエラー

    4. JDBC、MySQL:ビットをBIT(M!=1)列に入れる