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

MySQLの正規表現を、括弧を除外した条件で繰り返される単語に一致させます

    この正規表現を提案します:

    ^([^2]|[[:<:]][0-9]+/[0-9]+[[:>:]])*([[:<:]]|[a-z])2([[:>:]]|[a-z])([^2]|[[:<:]][0-9]+/[0-9]+[[:>:]])+([[:<:]]|[a-z])2([[:>:]]|[a-z])([^2]|[[:<:]][0-9]+/[0-9]+[[:>:]])*$
    

    少し長いですが、これらの文字列も「有効」と見なされるという点で、柔軟性があります。

    (2/2) 2new 2new
    2new (2/2) 2new (2/2)
    

    コード内

    SELECT
        *
    FROM
        A
    WHERE 
        description REGEXP '^(([^2]+|[[:<:]][0-9]+/[0-9]+[[:>:]])*2([[:>:]]|[a-z])){2}([^2]+|[[:<:]][0-9]+/[0-9]+[[:>:]])*$'
    

    SQLFiddle

    正規表現の内訳

    正規表現は実際には多くの繰り返し部分を使用するため、少し長いのです:

    ^                                        # Beginning of string
    
    (                                        # Open repeat group
       ([^2]+|[[:<:]][0-9]+/[0-9]+[[:>:]])*  # Any characters. See #1
      2                                      # 2
      ([[:>:]]|[a-z])                        # Word boundary or alphabet/letter. See #2
    ){2}                                     # Close repeat group and repeat 2 times
    
    ([^2]+|[[:<:]][0-9]+/[0-9]+[[:>:]])*     # Any characters. See #1
    
    $
    

    詳細な内訳

    • #1

      (           # Open group
      
        [^2]+     # Any characters except 2
      
      |           # OR
      
        [[:<:]]   # Open word boundary
        [0-9]+    # Any numbers
        /         # Forward slash
        [0-9]+    # Any numbers
        [[:>:]]   # Close word boundary
      
      )*          # Close group and repeat any number of times
      
    • #2

      (           # Open group
        [[:>:]]   # Word boundary
      |           # Or
        [a-z]     # Letter/alphabet
      )           # Close group
      

    単語の境界は、単語の最初と最後に一致します。ここでの単語の定義は、一連のアルファベット、数字、および下線文字です。

    [[:<:]] は単語の最初の境界であるため、単語の先頭で一致します。

    [[:>:]] は単語の最初の境界であるため、単語の最後で一致します。

    ここでそれらを使用すると、2 (および数値/数値部分)は他の数値で囲まれていません(したがって、21になります たとえば失敗する)または2を数える たとえば、21/4がある場合 2つの2にカウントされるものとして 文字列内のs。



    1. 1つの列の値が異なる最新の3つのレコードを選択します

    2. SQLServerはVarcharを日時に変換します

    3. XAMPP / MySQL:MySQLの再起動後、単一テーブルのテーブルスペースファイル。\ mysql\innodb_index_stats.ibdを開くことができませんでした

    4. MySQL-エラーコード1215、外部キー制約を追加できません