· 6 years ago · Jun 15, 2019, 01:50 PM
1sqlite> .schema
2CREATE TABLE IF NOT EXISTS "hex2val" (
3 "hex" TEXT NOT NULL,
4 "val" INTEGER NOT NULL,
5 PRIMARY KEY("hex")
6);
7CREATE TABLE power (x int primary key not null, power not null);
8sqlite> select * from hex2val;
90|0
101|1
112|2
123|3
134|4
145|5
156|6
167|7
178|8
189|9
19A|10
20B|11
21C|12
22D|13
23E|14
24F|15
25sqlite> select * from power;
261|1
272|16
283|256
294|4096
305|65536
31
32WITH str as (
33 select 1 pos, '0' value, 1 len UNION ALL
34 select 2 pos, '21F' value, 3 len UNION ALL
35 select 3 pos, '3B51' value, 4 len UNION ALL
36 select 4 pos, 'FFFF' value, 4 len
37 ),
38cnt as (WITH recursive cnt(idx) AS (SELECT 1 UNION ALL SELECT idx+1 FROM cnt LIMIT (select max(len) maxlen from str)) select * from cnt)
39select pos, value, sum(val * power)
40FROM str, cnt, hex2val, power
41where idx <= len
42 and hex = substr(value, idx, 1)
43 and x = len -idx + 1
44group by pos
45
461 0 0
472 21F 543
483 3B51 15185
494 FFFF 65535