sql >> Database teknologi >  >> RDS >> Mysql

Konvertering af afgrænset streng til flere værdier i mysql

Dette kaldes at gå en snor . Her er et eksempel på, hvordan du kan gøre det med de angivne specifikationer:

Du skal oprette en tabel, som indeholder lige så mange heltal som længden af ​​feltet + 1. Så hvis feltets længde er 255, skal du bruge 256 poster, som kun indeholder et enkelt tal fra 0-255.

int_table :

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

Dernæst skal du bruge en forespørgsel, som slutter sig til denne tabel og kontrollerer, om der findes et komma på denne placering eller ej. (Jeg kaldte din tabel legacy_table med felterne client og items , henholdsvis.)

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) = ',')
  )
 

Det er måske ikke effektivt nok til, at du rent faktisk kan bruge det, men jeg tænkte, at jeg ville præsentere det som et eksempel, bare så du ved, hvad der er tilgængeligt.



  1. Er det muligt at bruge en kommando af typen LOAD DATA INFILE til at OPDATERE rækker i db?

  2. Undgå JTextField setText-gentagelse rundt om i programmet

  3. Sådan vælger du den rigtige database til din virksomhed

  4. Kører PostgreSQL langsomt? Tips og tricks til at komme til kilden