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

MySQL:jak odstranit dvojité nebo více mezer z řetězce?

Zde je starý trik, který nevyžaduje regulární výrazy ani složité funkce.

Funkci nahrazení můžete použít 3krát ke zpracování libovolného počtu mezer, například takto:

REPLACE('This is    my   long    string',' ','<>')

se stává:

This<>is<><><><>my<><><>long<><><><>string

Poté nahradíte všechny výskyty '><' prázdným řetězcem '' tím, že jej zabalíte do jiného nahrazení:

REPLACE(
  REPLACE('This is    my   long    string',' ','<>'),
    '><',''
)

This<>is<>my<>long<>string

Nakonec poslední nahrazení převede '<>' zpět na jedinou mezeru

REPLACE(
  REPLACE(
    REPLACE('This is    my   long    string',
      ' ','<>'),
    '><',''),
  '<>',' ')

This is my long string

Tento příklad byl vytvořen v MYSQL (vpředu vložte SELECT), ale funguje v mnoha jazycích.

Pamatujte, že ke zpracování libovolného počtu nahrazovaných znaků potřebujete vždy pouze 3 funkce nahrazení.



  1. Dvě SQL LEFT JOINS poskytují nesprávný výsledek

  2. Formát data SQL:Jak s ním zacházet chytře

  3. Mám použít NOT IN, OUTER APPLY, LEFT OUTER JOIN, EXCEPT nebo NOT EXISTS?

  4. Zobrazte výsledky dotazů SQLite pomocí vertikálního výstupu