SEPARAR VRIOS VALORES SQLITE

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

SEPARAR VRIOS 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 questo tcnica tem ser com SQLite. ai vem um problema, preciso gerar uma View onde os dados de um campo separado por ponto e vrgula, devem ser separados, mas o SQLite no possui a funo Split e oferece apenas substr, consegui usar esta tranquilamente, dada a vasta documentao e exemplos disponveis, mas h uma questo importante, no h um nmero minimo ou mximo 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, so 350 rows e gera apenas 350 rows no VIEW, o que no est correto, uma vez que cada row na tabela, possui no campo kw mais de dois termos.
Agradeo 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 esprito so imateriais, como eles fazem para se localizar 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 esto incompleto. J tinha visto todos, pesquisei a mximo possvel antes de postar aqui. tenho trabalhado no exemplo de http://www.samuelbosch.com/2018/02/split-into-rows-sqlite.html, que tem apresentado resultados prximo 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. Faa o teste com o cdigo 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 esprito so imateriais, como eles fazem para se localizar 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 cdigo
  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, []Atrao; 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 vrgula, que meu caso. Com numeros funcionou as mil maravilhas, mas quando a situao 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, []Apago; Inseto; Planta[]),(3, []Gigoga; Razes; Permanncia; Conta; Engenharia Ambiental[]), (4, []Atrao; 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 esto no campo so strings e no so numricos 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