【问题标题】:mysql query to fetch only hex ascii data?mysql查询仅获取十六进制ascii数据?
【发布时间】:2017-11-06 04:13:49
【问题描述】:

我需要一个 MySQL 查询来获得处理上述输入数据的以下预期输出??(在我的数据中,我得到的垃圾数据范围从 \x128 到 \x160(十六进制数据)ASCII 字符。)。所以,我需要一个正则表达式模式仅获取包含十六进制值的数据,其余所有值均为 NULL,键列名称除外。

   Input data :
      **NAME    PHONE   ADDRESS**
        anu     345@2   hyderabad
        vinu    1234    raj^am
        ram      234    vizag
        kheer   233&3   vz1m
        palni   1333    rap#d


    Required output data:
       **NAME   PHONE   ADDRESS**
        anu     345@2   NULL
        vinu    NULL    raj^am
        kheer   233&3   NULL
        plain   NULL    rap#d

【问题讨论】:

    标签: mysql regex hex ascii


    【解决方案1】:

    您必须首先在 PHONE 列上对该结果使用 2 个查询,第二个是 ADDRESS 列 1.UPDATE test1 SET Phone=NULL WHERE Phone REGEXP '[@^]' 2.UPDATE test1 SET Address=NULL WHERE Address REGEXP '[@^]'

    【讨论】:

      【解决方案2】:
      HEX(phone) REGEXP '^(..)*[89ABCDEF]'
      

      将匹配任何具有任何非 Ascii 字节的电话​​。

      我怀疑您的意思不是 x128,也不是 x160。这些数字看起来更像十进制。如果你想捕捉 >= 128 和

      HEX(phone) REGEXP '^(..)*[89]'
      

      正则表达式说:

      ^ -- anchored at start
      (..)* -- skip any number of pairs of characters (remember they are hex)
      [89] -- match 8x or 9x
      -- ignore the rest of the column
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-12-09
        • 2015-08-23
        • 2012-10-02
        • 2011-08-02
        • 1970-01-01
        • 2014-02-18
        • 2012-11-14
        • 2020-11-20
        相关资源
        最近更新 更多