首页  >  问答  >  正文

在 MYSQL VER 8 存储的 700 万条记录中查找包含字母、空格和句点以外的字符的记录

我在 MYSQL DB 中插入了特殊字符,如下例所示,主要是在数据库的名字、姓氏列中。

<强>1。 ➡️BALPAI SAB

<强>2。 ���������������������������°���������������������������������������������������������������������������������������������������������������������� ??

有效案例:

*Saurabh Shree

S.shree

T.M.安东尼

老查尔斯·巴贝奇*

长度是可变的。所有内容都不区分大小写,没有尾随空格。两个连续单词之间只允许有空格和句点

我已经浏览了 regexp 的帖子,并将列和表的排序规则更改为 utfmb4_unicode_ci 并应用了 regexp 但没有运气。

我必须在大约 700 万条记录中搜索甚至单个字符的出现。

SELECT FARMER_BRANCH_NAME, HEX(FARMER_BRANCH_NAME) FROM BSBY.PROPOSAL

OUTPUT

Farmer Branch Name      Hex(Farmer Branch Name)
SME œ•œBRANCH JASDANœ•œ   534D45209C959C4252414E4348204A415344414E9C959C
নলহাটি        E0A6A8E0A6B2E0A6B9E0A6BEE0A69FE0A6BF
নলহাটি        E0A6A8E0A6B2E0A6B9E0A6BEE0A69FE0A6BF
নলহাটি        E0A6A8E0A6B2E0A6B9E0A6BEE0A69FE0A6BF
SME œ•œBRANCH JASDANœ•œ   534D45209C959C4252414E4348204A415344414E9C959C
Mumbai - Chembur         4D756D626169202D204368656D627572C2A0
New Delhi - Connaught Place - II   4E65772044656C6869202D20436F6E6E617567687420506C616365202D204949C2A0
Mumbai - Malad            4D756D626169202D204D616C6164C2A0
Bangalore - Cantonment    42616E67616C6F7265202D2043616E746F6E6D656E74C2A0
Ahmedabad-BOPAL           41686D6564616261642D424F50414CC2A0
SME œ•œBRANCH JASDANœ•œ    534D45209C959C4252414E4348204A415344414E9C959C

SELECT FARMER_NAME,HEX(FARMER_NAME) FROM BSBY_UAT.PROPOSAL where FARMER_NAME NOT REGEXP '[A-Za-z0-9.() ]$' 

OUTPUT

FARMER NAME         HEX(FARMER NAME)
RAHIM BISWAS        524148494D2042495357415309
ESARUL GAZI         45534152554C2047415A4909
GOLAM NABI MANDAL   474F4C414D204E414249204D414E44414C09
LATIF MANDAL        4C41544946204D414E44414C09
NILKAMAL MANDAL     4E494C4B414D414C204D414E44414C09
SHUKUR ALI MONDAL   5348554B555220414C49204D4F4E44414C09
¦€ Â¦€° Â¦€º Â§Â Â¦€¢  Â¦€  Â¦Â² Â¦Â¿  A0C2A680A0C2A680B0A0C2A680BAA0C2A7C281A0C2A680A220A0C2A680A0A0C2A6C2B2A0C2A6C2BF
HASINA KHATUN       484153494E41204B484154554E09
KSHETRAGOPAL GHOSH  4B534845545241474F50414C2047484F534809
SUKUMAR DAS HALDAR  53554B554D4152204441532048414C44415209
Yasin Hossain       596173696E20486F737361696E09
SHAH HOSSAIN MOLLA  5348414820484F535341494E204D4F4C4C4109
RAMJAN SEKH         52414D4A414E2053454B4809
Nibaran Ch. Mahato  4E69626172616E2043682E204D616861746F09
PRAKASH KUMAR MONDAL 5052414B415348204B554D4152204D4F4E44414C2009
UNFERA BEWA          554E4645524120424557410909
BODRUL HOQUE        424F4452554C20484F5155450909
à¦à¦¾à¦¦à¦² চনà§à¦¦à§à¦° সরকার    E0A6E0A6BEE0A6A6E0A6B220E0A69AE0A6A8E0A78DE0A6A6E0A78DE0A6B020E0A6B8E0A6B0E0A695E0A6BEE0A6B0
à¦à¦¾à¦¦à¦² চনà§à¦¦à§à¦° সরকার    E0A6E0A6BEE0A6A6E0A6B220E0A69AE0A6A8E0A78DE0A6A6E0A78DE0A6B020E0A6B8E0A6B0E0A695E0A6BEE0A6B0
মিনতি সিংহ    E0A6AEE0A6BFE0A6A8E0A6A4E0A6BF20E0A6B8E0A6BFE0A682E0A6B9
রেখা সরকার    E0A6B0E0A787E0A696E0A6BE20E0A6B8E0A6B0E0A695E0A6BEE0A6B0
রেখা সরকার    E0A6B0E0A787E0A696E0A6BE20E0A6B8E0A6B0E0A695E0A6BEE0A6B0
SUKDEB SARKARপ    53554B444542205341524B4152E0A6AA
KEYAMUL SEKH            4B4559414D554C2053454B480909
घोष पारà¥à¤µà¤¤à¥€  E0A498E0A58BE0A4B720E0A4AAE0A4BEE0A4B0E0A58DE0A4B5E0A4A4E0A580
à¦à¦¨à§à¦Ÿà§ সরকার    E0A69DE0A6A8E0A78DE0A69FE0A78120E0A6B8E0A6B0E0A695E0A6BEE0A6B0
à¦à¦²à¦°à¦¾à¦® সরকার  E0A6E0A6B2E0A6B0E0A6BEE0A6AE20E0A6B8E0A6B0E0A695E0A6BEE0A6B0
মনোতোষ সরকার  E0A6AEE0A6A8E0A78BE0A6A4E0A78BE0A6B720E0A6B8E0A6B0E0A695E0A6BEE0A6B0

这是我的代码:

SELECT distinct(FARMER_APPLICATION_ID) as FARMER_APPLICATION_ID,FARMER_AADHAR_NO,FARMER_EPIC_NO,FARMER_NAME,FARMER_GUARDIAN_NAME,FARMER_CROP_NAME,FARMER_L3_NAME,FARMER_L4_NAME,FARMER_L5_NAME,FARMER_L6_NAME,FARMER_BANK_NAME,FARMER_BANK_IFSC,PARTY_NAME,PARTY_CODE,FARMER_BRANCH_NAME
FROM BSBY_UAT.PROPOSAL 
where FARMER_AADHAR_NO NOT regexp '^[2-9]{1}[0-9]{3}[0-9]{4}[0-9]{4}$'
OR FARMER_BANK_IFSC not regexp '^[A-Z]{4}0[A-Z0-9]{6}$'
OR FARMER_NAME NOT REGEXP '[A-Za-z.() ]$'
OR FARMER_GUARDIAN_NAME NOT REGEXP '[A-Za-z.() ]$'
or FARMER_EPIC_NO NOT REGEXP'[A-Za-z0-9\/]$'
or FARMER_BANK_NAME NOT REGEXP'[A-Za-z.\-() ]$'
or FARMER_BRANCH_NAME NOT REGEXP'[A-Za-z0-9.,()\[\]\-]$'

P粉132730839P粉132730839236 天前418

全部回复(1)我来回复

  • P粉340980243

    P粉3409802432024-02-26 16:06:27

    这在问题中取“2”;我想知道它是否提供了任何线索:

    à ¦
    à ¦¿
    à ¦•
    à §Â
    à ¦°
    à ¦®
    à ¦¾
    à ¦¦
    à ¦¿
    à ¦¤
    à §Â
    à ¦Â

    对于其中一个十六进制字符串,我看到 转换(UNHEX('E0A69DE0A6A8E0A78DE0A69FE0A78120E0A6B8E0A6B0E0A695E0A6BEE0A6B0')使用utf8mb4) 产生 Jhantu Sarkar

    这并不一定会带来解决方案,但它可能会提示插入期间存在编码问题。

    对于正则表达式,请考虑类似

    HEX(column) REGEXP '^(..)*[89ABCDEF]'

    这将发现字符串中是否有任何字节具有非 Ascii 的 8 位代码。

    这是一个混合物:

    CONVERT(UNHEX('53554B444542205341524B4152E0A6AA') USING utf8mb4) --> 'SUKDEB SARKARপ'

    也就是说,它是 Ascii,但末尾带有孟加拉语“PA”。事实上,您看到的“SUKDEB SARKARઔ是 Mojibake 的标志。有关 Mojibake(和其他常见混乱)的讨论,请参阅此内容:UTF-8 字符有问题;我看到的不是我存储的

    回复
    0
  • 取消回复