Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да извлечете подниз в MySQL

Проблем:

Искате да извлечете подниз от текста в дадена колона.

Пример:

Нашата база данни има таблица с име 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;

Резултатът е:

подниз
пример
google
learnsql

Дискусия:

И първото, и второто решение премахват определен брой знаци от текста с SUBSTR() или SUBSTRING() функция. SUBSTR() е синоним на SUBSTRING() . И двете изискват низа и началната позиция като аргументи. Последният аргумент, който определя броя на знаците за извличане, не е задължителен. Ако последният аргумент е пропуснат, целият низ (от началната точка) ще бъде върнат.

В третото решение, SUBSTRING_INDEX() функцията премахва текста преди или след посочените знаци. Той изисква като аргументи низа, знака и колко екземпляра на знака трябва да се срещнат до мястото, където започва извличането на текст.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL игнорира ли нулеви стойности при уникални ограничения?

  2. Съхраняване на изображение в blob база данни; извличане от db в Picturebox

  3. Mysql изберете различен

  4. Как да анотирате полето за автоматично нарастване на MYSQL с анотации на JPA

  5. MySQL избира координати в обхват