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

Jak extrahovat podřetězec v MySQL

Problém:

Chcete extrahovat podřetězec z textu v daném sloupci.

Příklad:

Naše databáze obsahuje tabulku s názvem web_address s údaji ve sloupcích id a address . Chceme odstranit „www. “ na začátku a „.com “ na konci každé address .

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

Řešení 1:

Chcete-li odstranit první 4 znaky:

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

Chcete-li odstranit poslední 4 znaky:

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

Chcete-li odstranit první 4 znaky a poslední 4 znaky:

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

Řešení 2:

Chcete-li odstranit první 4 znaky:

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

Chcete-li odstranit poslední 4 znaky:

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

Chcete-li odstranit první 4 znaky a poslední 4 znaky:

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

Řešení 3:

Chcete-li odstranit všechny znaky před druhým ‚.‘ zprava:

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

Chcete-li odstranit všechny znaky za druhým ‚.‘ zleva:

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

Chcete-li odstranit všechny znaky za druhým ‚.‘ zleva, pak odstraňte všechny znaky před prvním ‚.‘ zprava:

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

Výsledek je:

podřetězec
příklad
google
learnsql

Diskuse:

První i druhé řešení odeberou z textu zadaný počet znaků pomocí SUBSTR() nebo SUBSTRING() funkce. SUBSTR() je synonymem pro SUBSTRING() . Oba vyžadují řetězec a počáteční pozici jako argumenty. Poslední argument, který definuje počet znaků k extrahování, je volitelný. Pokud je vynechán poslední argument, bude vrácen celý řetězec (od počátečního bodu).

Ve třetím řešení SUBSTRING_INDEX() funkce odstraní text před nebo za zadanými znaky. Jako argumenty vyžaduje řetězec, znak a kolik výskytů znaku by se mělo nacházet v místě, kde začíná extrakce textu.


  1. Místní dočasná tabulka v Oracle 10 (pro rozsah uložené procedury)

  2. Připojení PHP na Linuxu k Microsoft Access na Windows Share

  3. Převeďte desetinný čas na hodiny a minuty

  4. Co znamená ORDER BY (SELECT NULL)?