代码之家  ›  专栏  ›  技术社区  ›  Joe Mastey

区分大小写的RLIKE

  •  12
  • Joe Mastey  · 技术社区  · 14 年前

    datatbl

    +----------+
    | strfield |
    +----------+
    |    abcde |
    |    fgHIJ |
    |    KLmno |
    +----------+
    

    我想写一个类似这样的查询:

    select * from datatbl where strfield rlike '[a-z]*';
    

    在非SQL正则表达式中,我想返回小写行 abcde

    2 回复  |  直到 4 年前
        1
  •  24
  •   HoldOffHunger Lux    3 年前

    as BINARY 对于区分大小写的搜索:

    SELECT * 
      FROM datatbl 
     WHERE CAST(strfield  AS BINARY) rlike '[a-z]*';
    

    你会发现这是在 comments for the REGEXP/RLIKE documentation .

        2
  •  0
  •   CraZ    3 年前

    编辑:

    MySQL 5.x版

    您可以使用 LOWER()

    SELECT * 
    FROM datatbl 
    WHERE LOWER(strfield) RLIKE '[a-z]*';
    

    如果你在跑步 MySQL 8版+ ,也可以在中使用不区分大小写的开关 REGEXP_LIKE()

    SELECT * 
    FROM datatbl 
    WHERE REGEXP_LIKE(strfield, '[a-z]*', 'i');