Программирование >>  Преобразование значений null 

1 ... 59 60 61 [ 62 ] 63 64 65 ... 219


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



1 ... 59 60 61 [ 62 ] 63 64 65 ... 219

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика