Вычитание SQL один за другим - PullRequest
0 голосов
/ 24 ноября 2018

Я думал о вычитании цифр одну за другой, но не нашел способа реализовать это после больших усилий.

Строка 1: 100211210

Строка 2: 100010220

Результат: 000201010

И результат должен быть неотрицательным.

Ответы [ 2 ]

0 голосов
/ 24 ноября 2018
select GROUP_CONCAT(CAST(ABS(substring('123456782',c.count,1)-substring('323456789',c.count,1)) AS CHAR) separator '')
from (select c1.1*10+c2.1 count from (select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9 union all select 0) c1,
(select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9 union all select 0) c2 order by count) c
where c.count>0 and c.count<=length('123456782')

2 строка одинаковой длины, а последний параметр - длина строки

0 голосов
/ 24 ноября 2018

Select SUBSTR(t1.row,1,1)-(t2.row,1, 1)|| SUBSTR(t1.row,2,2)-SUBSTR(t2.row,2, 2)||... so on from table t1 where t1.row NOT IN (Select row in table t2);

Это проверит в той же таблице, существует ли строка, затем пропустит, если не вычитать цифру за цифрой, или вы можете использовать цикл в pl / sql, объявив значения для substr как i,J для обоих, а затем вычитать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...