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

Вземете единичен елемент от списъчен низ в MySQL

Няма собствена функция за това. Можете да използвате две функции SUBSTRING_INDEX. И трябва да проверите дали този конкретен индексен елемент съществува:

SET @string:='1,2,3,4,5';
SET @delimiter:=',';
SET @n:=6;

SELECT
  CASE WHEN
    CHAR_LENGTH(@string)-CHAR_LENGTH(REPLACE(@string, @delimiter, ''))>=
    @n*CHAR_LENGTH(@delimiter)-1
  THEN
    SUBSTRING_INDEX(SUBSTRING_INDEX(@string, @delimiter, @n), @delimiter, -1)
  END;
  • SUBSTRING_INDEX(@string, @delimiter, @n) връща подниз от низ @string преди @n поява на @delimiter .
  • SUBSTRING_INDEX( ... , @delimiter, -1) връща всичко вдясно от крайния разделител
  • трябва да проверите дали разделител @n съществува. Можем да извадим дължината на низа с разделителя и низа с премахнат разделител - използвайки REPLACE(@string, @delimiter, '') - и вижте дали е по-голямо от @n*CHAR_LENGTH(@delimiter)-1


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Проблем с инсталацията на Ruby on Rails (Windows)

  2. Ограничения за съхранение на MySQL потребителски дефинирани променливи

  3. MySQL PDO как да свързвам параметри за IN()

  4. Как да търсите няколко колони в MySQL?

  5. Това грешка в сортирането на MySQL ли е?