|
Программирование >> Преобразование значений null
MySQL Функция SUBSTR INDEX упрощает задачу синтаксического разбора IP-адреса: 1 select substring index(substring index(y.ip,.,1),.,-1) a, 2 substring index(substring index(y.ip,.,2),.,-1) b, 3 substring index(substring index(y.ip,.,3),.,-1) c, 4 substring index(substring index(y.ip,.,4),.,-1) d 5 from (select 92.111.0.2 as ip from t1) y Oracle Для проведения синтаксического разбора и обхода IP-адреса используйте встроенные функции SUBSTR и INSTR: 1 select ip, 2 substr(ip, 1, instr(ip,.)-1 ) a, 3 substr(ip, instr(ip,.) + 1, 4 instr(ip,.,1,2)-instr(ip,.)-1 ) b, 5 substr(ip, instr(ip,.,1,2) + 1, 6 instr(ip,.,1,3)-instr(ip,.,1,2)-1 ) c, 7 substr(ip, instr(ip,.,1,3)+1 ) d 8 from (select 92.111.0.2 as ip from t1) PostgreSQL Для проведения синтаксического разбора IP-адреса используйте встроенную функцию SPLIT PART: 1 select split part(y.ip,.,1) as a, 2 split part(y.ip,.,2) as b, 3 split part(y.ip,.,3) as c, 4 split part(y.ip,.,4) as d 5 from (select cast(92.111.0.2 as text) as ip from t1) as y SQL Server С помощью рекурсивного оператора WITH моделируйте перебор символов IP-адреса, для синтаксического разбора используйте функцию SUBSTRING. Добавьте в начало IP-адреса точку с целью обеспечения единообразия при обработке каждой группы чисел: 1 with x (pos,ip) as ( 2 select 1 as pos,.92.111.0.222 as ip from t1 3 union all 4 select pos+1,ip from x where pos+1 <= 20 6 select max(case when rn=1 then e end) a, 7 max(case when rn=2 then e end) b, 8 max(case when rn=3 then e end) c, 9 max(case when rn=4 then e end) d 10 from ( 11 select pos,c,d, 12 case when charindex(.,d) > 0 13 then substring(d,1,charindex(.,d)-1) 14 else d 15 end as e, 16 row number() over(order by pos desc) rn 17 from ( 18 select pos, ip,right(ip,pos) as c, 19 substring(right(ip,pos),2,len(ip)) as d 20 from x 21 where pos <= len(ip) 22 and substring(right(ip,pos),1,1) = . 23 ) x 24 ) y Обсуждение Встроенные функции базы данных позволяют без труда реализовать обход частей строки. Главное - найти все точки, после этого можно проводить синтаксический разбор чисел, располагающихся между ними. Работа с числами Данная глава посвящена операциям над числами, в том числе различным вычислениям. Хотя SQL не тот инструмент, который первым приходит на ум при необходимости выполнить сложные вычисления, он очень эффективен для повседневных рутинных операций с числами. В некоторых рецептах данной главы используются агрегатные функции и оператор GROUP BY. Если вы не знакомы с группировкой, пожалуйста, прочитайте хотя бы первый основной раздел приложения А Группировка . Вычисление среднего Задача Требуется вычислить среднее значение столбца либо для всех строк таблицы, либо для некоторого подмножества строк. Например, поставлена задача найти среднюю заработную плату для всех служащих предприятия, а также среднее ее значение в каждом отделе. Решение Для вычисления средней заработной платы для всех служащих просто применяем функцию AVG к столбцу, содержащему эти данные. Поскольку предикат WHERE не используется, среднее вычисляется для всех определенных (не-NULL) значений: 1 select avg(sal) as avg sal 2 from emp AVG SAL 2073.21429
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |