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

Преобразуване на разделен низ в множество стойности в mysql

Това се нарича ходене по низ . Ето пример за това как можете да го направите с предоставените спецификации:

Ще трябва да създадете таблица, която съдържа толкова цели числа, колкото дължината на полето + 1. Така че, ако дължината на полето е 255, ще ви трябват 256 записа, които съдържат само едно число от 0-255.

int_table :

+---+
| i |
+---+
| 0 |
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
+---+

След това ще ви трябва заявка, която се присъединява към тази таблица и проверява дали на това място съществува запетая или не. (Нарекох вашата таблица legacy_table с полетата client и items , съответно.)

select 
  legacy_table.client, 
  substring(
    legacy_table.items, 
    int_table.i + 1, 
    if(
      locate(',', legacy_table.items, int_table.i + 1) = 0, 
      length(legacy_table.items) + 1, 
      locate(',', legacy_table.items, int_table.i + 1)
    ) - (int_table.i + 1)
  ) as item
from legacy_table, int_table
where legacy_table.client = 'xyz001'
  and int_table.i < length(legacy_table.items)
  and (
    (int_table.i = 0) 
    or (substring(legacy_table.items, int_table.i, 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. Синхронизиране на клиентска база данни на SQLite с база данни на MySQL сървър

  2. MySQL – НАЙ-МАЛКИ и НАЙ-ГОЛЕМИ оператори за сравнение

  3. Фатална грешка:Неуловено изключение „mysqli_sql_exception“ със съобщение „Не е използван индекс в заявката/подготвеното изявление“

  4. как да влезете в mysql и да потърсите базата данни от терминала на Linux

  5. едновременен достъп до базата данни MySQL с помощта на съхранена процедура