Проблем:
Искате да извлечете подниз от текста в дадена колона.
Пример:
Нашата база данни има таблица с име web_address с данни в колоните id и address . Искаме да премахнем „www. “ в началото и „.com “ в края на всеки address .
| id | адрес |
|---|---|
| 1 | www.example.com |
| 2 | www.google.com |
| 3 | www.learnsql.com |
Решение 1:
За да премахнете първите 4 знака:
SELECT SUBSTR(address, 5, LENGTH(address) -4) AS substring FROM web_address;
За да премахнете последните 4 знака:
SELECT SUBSTR(address, 1, LENGTH(address) -4) AS substring FROM web_address;
За да премахнете първите 4 знака и последните 4 знака:
SELECT SUBSTR(address, 5, LENGTH(address) -8) AS substring FROM web_address;
Решение 2:
За да премахнете първите 4 знака:
SELECT SUBSTRING(address, 5, LENGTH(address)) AS substring FROM web_address;
За да премахнете последните 4 знака:
SELECT SUBSTRING(address, 1, LENGTH(address) -4) AS substring FROM web_address;
За да премахнете първите 4 знака и последните 4 знака:
SELECT SUBSTRING(address, 5, LENGTH(address) -8) AS substring FROM web_address;
Решение 3:
За да премахнете всички знаци преди втория „.“ отдясно:
SELECT SUBSTRING_INDEX(address, '.', -2) AS substring FROM web_address;
За да премахнете всички знаци след втория „.“ отляво:
SELECT SUBSTRING_INDEX(address, '.', 2) AS substring FROM web_address;
За да премахнете всички знаци след втория „.“ отляво, след това премахнете всички знаци преди първия „.“ отдясно:
SELECT SUBSTRING_INDEX( SUBSTRING_INDEX(address, '.', 2), '.', -1 ) AS substring FROM web_address;
Резултатът е:
| подниз |
|---|
| пример |
| learnsql |
Дискусия:
И първото, и второто решение премахват определен брой знаци от текста с SUBSTR() или SUBSTRING() функция. SUBSTR() е синоним на SUBSTRING() . И двете изискват низа и началната позиция като аргументи. Последният аргумент, който определя броя на знаците за извличане, не е задължителен. Ако последният аргумент е пропуснат, целият низ (от началната точка) ще бъде върнат.
В третото решение, SUBSTRING_INDEX() функцията премахва текста преди или след посочените знаци. Той изисква като аргументи низа, знака и колко екземпляра на знака трябва да се срещнат до мястото, където започва извличането на текст.