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

MySQL:nahradit výskyt řetězce v poli kromě prvního

Pokud se "MyString" bude vždy vyskytovat jako první termín v poli, bude to fungovat:

update MyTable set MyField = replace(MyField, ' MyString','')

Klíčovým bodem výše je, že hledáme výskyty "MyString" s úvodní mezerou, takže první výskyt na začátku pole bude ignorován.

Domnívám se však, že by to mohlo být příliš křehké – co když první výskyt „MyString“ není na začátku pole?

v tomto druhém případě potřebujete následující:

UPDATE 
    MyTable 
SET 
    MyField = 
    CONCAT(
        LEFT(MyField,INSTR(MyField,'MyString') + LENGTH('MyString')), 
        REPLACE(RIGHT(MyField, LENGTH(MyField) - (INSTR(MyField,'MyString') + LENGTH('MyString'))), 'MyString','') 
    )

Tím se pole rozdělí na dvě části, první část až po první výskyt "MyString" (včetně) a druhá část nahradí všechny další jeho výskyty.




  1. Postgresql:formát data a výstup v místním jazyce

  2. Kde nastavím kódování znaků v aplikaci Java Swing, abych mohl zapisovat hindštinu do databáze MySQL?

  3. TSQL – Přidat sloupec do všech tabulek v databázi [Příklad kurzoru]

  4. Jak mohu vidět TRANSACTION_REPEATABLE_READ v akci s JDBC / MySQL?