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

Jak nahradit část řetězce v MySQL

Problém:

Chtěli byste nahradit část řetězce jiným řetězcem v MySQL.

Příklad:

Naše databáze obsahuje tabulku s názvem motorbike_sale s údaji v id , name a part_number sloupce.

id jméno part_number
1 Harley Davidson x 1245-AC2-25
2 Honda CB750-x 012-GK8-A8
3 Suzuki Hayabusa X 798-25-28

Rádi bychom změnili čísla dílů motorek tak, že všechny znaky pomlčky nahradíme lomítky.

Řešení 1:

SELECT name,
  REPLACE( part_number, '-', '/' ) as new_part_number
FROM motorbike_sale;

Tento dotaz vrátí seznam názvů motocyklů a nových čísel dílů. Všimněte si lomítek, která nahradila pomlčky v číslech dílů:

name new_part_number
Harley Davidson x 1245/AC2/25
Honda CB750-x 012/GK8/A8
Suzuki Hayabusa X 798/25/28

Diskuse:

Pomocí funkce MySQL REPLACE() nahradíte podřetězec (tj. slova, znak atd.) jiným podřetězcem a vrátíte změněný řetězec. Tato funkce má tři argumenty:

  • Řetězec, který se má změnit. (V našem příkladu je to sloupec part_number .)
  • Podřetězec, který se má nahradit (tj. znak „-“).
  • Podřetězec, který se má vložit (tj. znak „/“).

Všimněte si, že tato funkce nahrazuje vše výskyty podřetězce v daném řetězci nebo sloupci. V našem příkladu každé číslo_části obsahuje tři znaky pomlčky, z nichž každý byl nahrazen lomítkem.

V dalším příkladu nahradíme všechny výskyty „x“ v názvech motorek „10“.

Řešení 2:

SELECT id,
  REPLACE( name, 'x', '10' ) as new_name,
  part_number
FROM motorbike_sale
WHERE id>1;

Tento dotaz používá klauzuli WHERE k filtrování záznamů pro řádky s id hodnotu 2 nebo vyšší.

Všimněte si, že název motocyklu Honda byl změněn z „x“ na „10“, ale název motocyklu Suzuki se nezměnil. Proč ne? Protože REPLACE() rozlišuje velká a malá písmena. Proto „x“ není totéž jako „X“. V tomto příkladu bylo „x“ nahrazeno „10“, ale „X“ zůstalo nezměněno.

Tento dotaz zobrazí nový název motocyklu Honda a starý název motocyklu Suzuki.

id new_name part_number
Honda CB750-10 012-GK8-A8
Suzuki Hayabusa X 798-25-28

  1. Příklady LOG() v SQL Server

  2. S DUPLIKÁTNÍM KLÍČEM + AUTOMATICKÝM PŘIDĚLENÍM problém mysql

  3. Zpracování ExecuteScalar(), když nejsou vráceny žádné výsledky

  4. Základy SQL Server Inner Join s příklady