sql >> Databáze >  >> RDS >> Database

Jak oříznout řetězce v SQL

Problém:

Chcete odstranit konkrétní znaky ze začátku a konce řetězce.

Příklad:

Naše databáze obsahuje tabulku s názvem post s údaji ve dvou sloupcích:id a title .

id title
1 ' Novinky o psech'
3 'Eurovize 2019'
4 'Nové politické klima'

Ořízněte název každého příspěvku, abychom odstranili zbytečnou mezeru na začátku a konci.

Řešení:

Použijeme TRIM funkce. Zde je dotaz, který byste napsali:

SELECT TRIM( BOTH ' ' FROM title ) as new_title
FROM post;

Případně můžete použít kratší verzi bez BOTH klíčové slovo; ve výchozím nastavení TRIM bude to považovat za OBOU operaci.

SELECT TRIM(' ' FROM title ) as new_title
FROM post;

Zde je výsledek obou dotazů:

new_title
„Novinky o psech“
„Eurovize 2019“
„Nové politické klima“

Diskuse:

Použijte TRIM funkce, pokud chcete oříznout řetězec v tabulce. Tato funkce umožňuje odstranit určitý znak ze začátku nebo konce řetězce nebo z obou konců. Tato funkce má následující argumenty:

  • Klíčové slovo určující konce, ze kterých se mají oříznout (volitelné – BOTH ve výchozím nastavení).
  • Znak, který chcete z řetězce oříznout.
  • FROM klíčové slovo a za ním název sloupce řetězce, který má být oříznut.

V našem příkladu to vypadá takto:

TRIM( BOTH ' ' FROM title )

Jak je uvedeno výše, TRIM může vzít jako svůj první argument jiná klíčová slova. Kromě ořezávání z obou konců nám umožňuje odstranit znak pouze z konce řetězce nebo pouze od začátku:

  • TRAILING (odstranit z konce)
  • LEADING (odstranit od začátku)

Níže uvedený příklad odstraňuje mezeru na konci každého titulu (ale stejně dobře by se dal použít k oříznutí mezery na začátku, pokud použijete LEADING místo toho klíčové slovo):

SELECT TRIM( TRAILING ' ' FROM title ) as new_title
FROM post;

Dotaz vrátí title sloupec bez mezery na konci. Všimněte si, že mezery na začátku zůstávají nedotčené.

new_title
‘Novinky o psech‘
„Eurovize 2019“
„Nové politické klima“

  1. Jak číst a resetovat AUTO_INCREMENT v MySQL

  2. Jak nahradit část řetězce v SQL

  3. Kopírování řádku ve stejné tabulce, aniž byste museli zadávat více než 50 názvů sloupců (při změně 2 sloupců)

  4. Zkontrolujte, zda na tabulku odkazuje cizí klíč na serveru SQL pomocí OBJECTPROPERTY()