sql >> Databáze >  >> RDS >> Mysql

nahradit nesmyslné znaky v mysql

Přišel jsem na to. Použil jsem vestavěný hex mysql funkce vypsat záznam, o kterém jsem věděl, že je špatný.

    select hex(column) from table where id=666;

Pak jsem vybral slova (tato čísla vložená mezi "20" s) a zjistil, že moje problematická sada bajtů byla ve skutečnosti x'C3A2E282AC2671756F743B' . Jak to odpovídá tomu, jak jsem to viděl zakódované v PHP a mým systémem (jako e2 80 ) Nevím a v tuto chvíli je mi to vlastně jedno.

Chcete-li ověřit, před zničením dat je zapojte zpět do mysql:

    select x'C3A2E282AC2671756F743B';
    +---------------------------+
    | x'C3A2E282AC2671756F743B' |
    +---------------------------+
    | â€"               |
    +---------------------------+
    1 row in set (0.00 sec)

Takže pomocí nahrazovacího dotazu jako výše jsem se dokázal zbavit všech špatných dat najednou.

Pro záznam to bylo:

    update TABLE set COLUMN = replace(COLUMN, x'C3A2E282AC2671756F743B','--');

Opravdu doufám, že to bude pro někoho užitečné. Ačkoli se zdá, že kódování snafus je v mysql docela běžné, hledal jsem všude a nemohl jsem najít vysvětlení pro tento nakonec poměrně jednoduchý proces.



  1. Oracle preferoval délky sloupců

  2. Django / MySQL:Jak provádět autonomní transakce (zadávat pouze podmnožinu dotazů)?

  3. OBJEDNÁVKA MYSQL UNION

  4. Jak mohu změnit NLS_DATE_FORMAT v PHP