SEPARAR VÁRIOS VALORES SQLITE

 Tópico anterior Próximo tópico Novo tópico

SEPARAR VÁRIOS VALORES SQLITE

SQL / DATABASE

 Compartilhe  Compartilhe  Compartilhe
#489435 - 10/07/2019 14:26:34

WCOSTA
VASSOURAS
Cadast. em:Dezembro/2003


Membro da equipe
Pessoal Salve,
Estou desenvolvendo um projeto, por uma questão técnica tem ser com SQLite. ai vem um problema, preciso gerar uma View onde os dados de um campo separado por ponto e vírgula, devem ser separados, mas o SQLite não possui a função Split e oferece apenas substr, consegui usar esta tranquilamente, dada a vasta documentação e exemplos disponíveis, mas há uma questão importante, não há um número minimo ou máximo de substring, ou seja, podemos ter, por exemplo, em um registo no campo kw flores; abelhas. em outro registro flores; abelas, plantas; mata.
Preciso separar as substring e gerar um view com count (essa parte é tranquila), mas separa uma a um os termo está sendo osso. Abaixo o comando SQL do SQLite que estou usando
  CREATE VIEW IF NOT EXISTS kwcount AS SELECT  substr(kw, 0, (instr(kw,";"))) AS kwgp FROM submissao;


Com esse comando obtenho apenas o primeiro termo de cada, ou seja, são 350 rows e gera apenas 350 rows no VIEW, o que não está correto, uma vez que cada row na tabela, possui no campo kw mais de dois termos.
Agradeço antecipadamente a ajuda de todos

AntSoft Systems On Demand



Resposta escolhida #489437 - 10/07/2019 15:00:36

JABA
CABO FRIO
Cadast. em:Agosto/2005


stackoverflow.com/questions/24258878/how-to-split-comma-separated-value-in-sqlite

www.samuelbosch.com/2018/02/split-into-rows-sqlite.html

www.npap.me/blog/sqlite-split-string



_______________________________________________________________________________________________

Se a alma ou espírito são imateriais, como eles fazem para se localizarem quando o corpo está em movimento?



#489439 - 10/07/2019 15:16:15

WCOSTA
VASSOURAS
Cadast. em:Dezembro/2003


Membro da equipe
JABA
Valeu, mas o exemplos possuem erro ou estão incompleto. Já tinha visto todos, pesquisei a máximo possível antes de postar aqui. tenho trabalhado no exemplo de http://www.samuelbosch.com/2018/02/split-into-rows-sqlite.html, que tem apresentado resultados próximo o ideal.

AntSoft Systems On Demand



#489448 - 10/07/2019 19:03:24

JABA
CABO FRIO
Cadast. em:Agosto/2005


Você deve estar fazendo alguma coisa de errado. Faça o teste com o código abaixo.

CREATE TABLE articles(id INTEGER PRIMARY KEY, categories TEXT);
INSERT INTO articles VALUES(1, '123,13,43'), (2, '1,3,15'),
(3, '9,17,44,18,3'), (4, ''), (5, NULL);

WITH split(id, category, str) AS (
    SELECT id, '', categories||',' FROM articles
    UNION ALL SELECT id,
    substr(str, 0, instr(str, ',')),
    substr(str, instr(str, ',')+1)
    FROM split WHERE str
) SELECT id, category FROM split WHERE category ORDER BY id;


Output is as you expected:

id|category
1|123
1|13
1|43
2|1
2|3
2|15
3|9
3|17
3|44
3|18
3|3

stackoverflow.com/questions/40289159/split-comma-separated-values-and-map-them-to-original-id-in-sqlite?noredirect=1&lq=1

_______________________________________________________________________________________________

Se a alma ou espírito são imateriais, como eles fazem para se localizarem quando o corpo está em movimento?



#489454 - 11/07/2019 00:26:39

WCOSTA
VASSOURAS
Cadast. em:Dezembro/2003


Membro da equipe
JABA
Alterando seu código
  CREATE TABLE articles(id INTEGER PRIMARY KEY, categories TEXT);
INSERT INTO articles VALUES(1, '123; 13; 43'), (2, '1; 3; 15'),(3, '9; 17; 44; Conta; 3'), (4, 'Atração; Alou'), (5, NULL);

WITH split(id, category, str) AS (    SELECT id, '', categories||';' FROM articles    UNION ALL SELECT id,    substr(str, 0, instr(str, ';')),    substr(str, instr(str, ';')+1)    FROM split WHERE str) SELECT id, category FROM split WHERE category ORDER BY id;

Alterei o separador para ponto e vírgula, que é meu caso. Com numeros funcionou as mil maravilhas, mas quando a situação é igual acima ou ainda igual abaixo ada retrona
  CREATE TABLE articles(id INTEGER PRIMARY KEY, categories TEXT);
INSERT INTO articles VALUES(1, 'Planta; Flores; Abelha'), (2, 'Apagão; Inseto; Planta'),(3, 'Gigoga; Raízes; Permanência; Conta; Engenharia Ambiental'), (4, 'Atração; Alou'), (5, NULL);

WITH split(id, category, str) AS (    SELECT id, '', categories||';' FROM articles    UNION ALL SELECT id,    substr(str, 0, instr(str, ';')),    substr(str, instr(str, ';')+1)    FROM split WHERE str) SELECT id, category FROM split WHERE category ORDER BY id;


Os dados que estão no campo são strings e não são numéricos em quase sua totalidade

AntSoft Systems On Demand



#489455 - 11/07/2019 01:43:13

WCOSTA
VASSOURAS
Cadast. em:Dezembro/2003


Membro da equipe
JABA meu brother,
consegui seus exemplos foram importantes, por isso ponto pra ti
  CREATE VIEW IF NOT EXISTS kwcount AS WITH split(word, str) AS (SELECT '', kw||';' FROM submissao UNION ALL SELECT substr(str, 0, instr(str, ';')), substr(str, instr(str, ';')+1) FROM split WHERE str!='') SELECT word FROM split WHERE word!=''


AntSoft Systems On Demand



 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por WCOSTA em 11/07/2019 01:43:58