sql >> Database >  >> RDS >> Database

Strings in SQL trimmen

Probleem:

U wilt specifieke tekens aan het begin en einde van een tekenreeks verwijderen.

Voorbeeld:

Onze database heeft een tabel met de naam post met gegevens in twee kolommen:id en title .

id titel
1 ' Nieuws over honden '
3 'Eurovisie 2019 '
4 'Nieuw politiek klimaat'

Laten we de titel van elk bericht inkorten om de onnodige ruimte aan het begin en einde te verwijderen.

Oplossing:

We gebruiken de TRIM functie. Dit is de vraag die je zou schrijven:

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

Als alternatief kunt u de kortere versie gebruiken zonder de BOTH trefwoord; standaard TRIM zal dit als BEIDE operatie behandelen.

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

Dit is het resultaat van beide zoekopdrachten:

new_title
'Nieuws over honden'
'Eurovisie 2019'
'Nieuw politiek klimaat'

Discussie:

Gebruik de TRIM functie als u een string in een tabel wilt inkorten. Met deze functie kunt u een specifiek teken aan het begin of einde van een tekenreeks verwijderen, of aan beide uiteinden. Deze functie heeft de volgende argumenten:

  • Een trefwoord dat de uiteinden aangeeft waarvan moet worden afgesneden (optioneel—BOTH standaard).
  • Het teken dat u uit de tekenreeks wilt verwijderen.
  • De FROM trefwoord, gevolgd door de naam van de tekenreekskolom die moet worden bijgesneden.

In ons voorbeeld ziet dat er als volgt uit:

TRIM( BOTH ' ' FROM title )

Zoals hierboven vermeld, TRIM kan andere trefwoorden als eerste argument nemen. Naast het trimmen van beide uiteinden, kunnen we een teken alleen aan het einde van een tekenreeks of alleen vanaf het begin verwijderen:

  • TRAILING (verwijder aan het einde)
  • LEADING (verwijderen vanaf het begin)

In het onderstaande voorbeeld wordt de spatie aan het einde van elke titel verwijderd (maar kan net zo goed worden gebruikt om de spatie aan het begin in te korten als u de LEADING gebruikt zoekwoord in plaats daarvan):

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

De zoekopdracht retourneert de title kolom zonder spatie aan het einde. Merk op dat de spaties aan het begin onaangeroerd blijven.

new_title
‘ Nieuws over honden’
'Eurovisie 2019'
‘Nieuw politiek klimaat’

  1. Hoe TIMESTAMPADD() werkt in MariaDB

  2. Hoe te converteren naar hoofdletters in SQLite

  3. Zoek de dichtstbijzijnde breedtegraad/lengtegraad met een SQL-query

  4. Slechte RAC-node opnieuw maken