1
resposta

Como representar uma lista de String no MySql

Olá pessoal. Preciso persistir no banco uma estrutura que represente uma lista de String. Qual seria a maneira mais eficiente e prática de representar, armazenar e posteriormente adquirir esses dados no mysql? Pensei em uma estrutura String, separando os dados por vírgula e para adquirí-los ler cada string até a vírgula, mas não me parece uma solução muito profissional. Pensei também em criar uma tabela separada para indexar cada string, mas também não tive muita clareza. Qual seria a maneira correta de realizar essa modelagem?

1 resposta

Oi, Edson

Sugiro usar o tipo JSON

Exemplo:

  • Criar tabela e inserir os dados

CREATE TABLE tabela_exemplo (
  id INT PRIMARY KEY,
  lista_strings JSON
);

INSERT INTO tabela_exemplo (id, lista_strings) 
VALUES (1, '["string 1-1", "string 1-2", "string 1-3"]'),
(2, '["string 2-1", "string 2-2"'),
(3, '["string 3-1", "string 3-2", "string 3-3", "string 3-4"]');
  • Tipos de consulta

# Mostrar a coluna lista_strings como um array:
SELECT id, JSON_ARRAY(lista_strings) AS array_strings
FROM tabela_exemplo;

# Mostrar os primeiros elementos da coluna lista_strings:
SELECT id, JSON_EXTRACT(lista_strings, '$[0]') AS primeiro_elemento
FROM tabela_exemplo;

# Mostrar o total de elementos da coluna lista_strings:
SELECT id, JSON_LENGTH(lista_strings) AS total_elementos
FROM tabela_exemplo;
  • Saída
  1. Mostrar a coluna lista_strings como um array:

    idarray_strings
    1["string 1-1", "string 1-2", "string 1-3"]
    2["string 2-1", "string 2-2"]
    3["string 3-1", "string 3-2", "string 3-3", "string 3-4"]
  2. Mostrar os primeiros elementos da coluna lista_strings:

    idprimeiro_elemento
    1"string 1-1"
    2"string 2-1"
    3"string 3-1"
  3. Mostrar o total de elementos da coluna lista_strings:

    idtotal_elementos
    13
    22
    34
  Caso este post tenha lhe ajudado, marque-o como solução . Bons Estudos!  🤓