Hi,
from time to time I try to solve well-known task of making rows from a
comma-delimited list and the best I could do was this:
- create a user-function returning zero-based Nth item from the list (let's
call it GetItemFromSet)
- make a complex query like this (this one allows up to 16 elements in the
list, can be expanded with similar selects)

SELECT Trim(GetItemFromSet(Value, '23, 14, 1, 7, 9')) Item FROM
(SELECT B1.B*1 + B2.B*2 + B3.B*4 + B4.B*8 AS VALUE FROM
(SELECT 0 AS B UNION SELECT 1 AS B) AS B1,
(SELECT 0 AS B UNION SELECT 1 AS B) AS B2,
(SELECT 0 AS B UNION SELECT 1 AS B) AS B3,
(SELECT 0 AS B UNION SELECT 1 AS B) AS B4,
) WHERE NOT (Item Is Null)

Is there a way to implement something more elegant or at least to improve
this approach. For example, the query for 16 bit limit will have 16 selects
and bigger expression and also will iterate through all cross join output
when we actually only have 5 items in the list.

Max
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to