sql >> Databasteknik >  >> RDS >> Mysql

Hur man extraherar en delsträng i MySQL

Problem:

Du vill extrahera en delsträng från texten i en given kolumn.

Exempel:

Vår databas har en tabell som heter web_address med data i kolumnerna id och address . Vi vill ta bort "www.". ' i början och '.com ’ i slutet av varje address .

id adress
1 www.example.com
2 www.google.com
3 www.learnsql.com

Lösning 1:

Så här tar du bort de första fyra tecknen:

SELECT
SUBSTR(address, 5, LENGTH(address) -4) AS substring
FROM web_address;

Så här tar du bort de fyra sista tecknen:

SELECT
SUBSTR(address, 1, LENGTH(address) -4) AS substring
FROM web_address;

Så här tar du bort de första 4 tecknen och de sista 4 tecknen:

SELECT
SUBSTR(address, 5, LENGTH(address) -8) AS substring
FROM web_address;

Lösning 2:

Så här tar du bort de första fyra tecknen:

SELECT
SUBSTRING(address, 5, LENGTH(address)) AS substring
FROM web_address;

Så här tar du bort de fyra sista tecknen:

SELECT
SUBSTRING(address, 1, LENGTH(address) -4) AS substring
FROM web_address;

Så här tar du bort de första 4 tecknen och de sista 4 tecknen:

SELECT
SUBSTRING(address, 5, LENGTH(address) -8) AS substring
FROM web_address;

Lösning 3:

Så här tar du bort alla tecken före det andra "." från höger:

SELECT
SUBSTRING_INDEX(address, '.', -2) AS substring
FROM web_address;

Så här tar du bort alla tecken efter det andra "." från vänster:

SELECT
SUBSTRING_INDEX(address, '.', 2) AS substring
FROM web_address;

För att ta bort alla tecken efter det andra "." från vänster, ta sedan bort alla tecken före det första "." från höger:

SELECT
SUBSTRING_INDEX(
	SUBSTRING_INDEX(address, '.', 2),
	'.',
	-1
) AS substring
FROM web_address;

Resultatet är:

delsträng
exempel
google
learnsql

Diskussion:

Den första och den andra lösningen tar båda bort ett specificerat antal tecken från texten med SUBSTR() eller SUBSTRING() fungera. SUBSTR() är en synonym för SUBSTRING() . De kräver båda strängen och startpositionen som argument. Det sista argumentet, som definierar antalet tecken som ska extraheras, är valfritt. Om det sista argumentet utelämnas kommer hela strängen (från startpunkten) att returneras.

I den tredje lösningen, SUBSTRING_INDEX() funktionen tar bort texten före eller efter de angivna tecknen. Den kräver som argument strängen, tecknet och hur många instanser av tecknet som ska påträffas till där textextraktionen börjar.


  1. PostgreSQL returnerar resultatet satt som JSON-array?

  2. Hur man gör dynamiska postgres-förberedda uttalanden i PHP

  3. Mysql - radera från flera tabeller med en fråga

  4. CURRENT_TIMESTAMP Exempel – MySQL