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

正規表現を使用してフィールドの一部を選択する

    この回答は廃止されました。 MySqlはより良い正規表現サポートを持っています。

    いいえ、残念ながら、MySQLにはSELECT句の列のコンテンツに正規表現を適用する方法がなく、WHERE句のみが適用されます。

    ただし、これを行うには、通常の(正規表現以外の)文字列操作関数を使用できます。アンパサンドで区切られたパラメータ文字列を含む列の名前がurlの場合 、ID番号を見つけるこの細かい文字列式を使用して、ID番号を取得できます。

      CAST(RIGHT(url, LENGTH(url) - 3 - LOCATE('&id=', url)) AS SIGNED INTEGER)
    

    したがって、idのリストが必要な場合 urlの値 table1の列 、このSELECTを使用できます クエリ。

    SELECT CAST(RIGHT(url, LENGTH(url) - 3 - 
                           LOCATE('&id=', url)) AS SIGNED INTEGER) AS id
      FROM table1
     WHERE url REGEXP '&id=[0-9]+'
    

    ご覧のとおり、これは正規表現検索機能を使用して適切な行を検索します。

    これについては何も速いことはありません。正規表現のマッチングでは、MySQLインデックスを利用できません。事前に抽出されたid列を使用してテーブルをロードすることを選択できる場合は、テーブルが大きくなったときに検索する方がはるかに優れています。



    1. データベースメタデータを取得する方法

    2. '日付'のデフォルト値が無効です

    3. 特定の日付範囲でアクティブだった従業員を取得します

    4. DjangoでNorthwindを実装する方法