Проблем:
Искате да извлечете подниз от текста в дадена колона.
Пример:
Нашата база данни има таблица с име 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()
функцията премахва текста преди или след посочените знаци. Той изисква като аргументи низа, знака и колко екземпляра на знака трябва да се срещнат до мястото, където започва извличането на текст.