Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Где я не прав? / 2 сообщений из 2, страница 1 из 1
26.11.2015, 16:08
    #39114190
Andrey Sribnyak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Где я не прав?
Если выполнить запрос:

Код: sql
1.
select case when char_length('1.2.3.4.5')< char_length(replace('1.2.3.4.5','.',''))+4 then 1 else 0 end, char_length('1.2.3.4.5'), char_length(replace('1.2.3.4.5','.',''))+4;



вернется:

0 9 9

Пишу функцию:

Код: sql
1.
2.
3.
4.
5.
6.
7.
CREATE OR REPLACE FUNCTION aws_sqlserver_ext.parsename(
    object_name varchar,
    object_piece integer) 
    RETURNS VARCHAR AS $$
select case when char_length('$1')< char_length(replace('$1','.',''))+4 and $2 between 1 and 4 then reverse(split_part(reverse($1),'.',$2)) else '' END

$$ immutable LANGUAGE 'sql';



Выполняю на основе ее запрос:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
select aws_sqlserver_ext.parsename(n,k), k
from
(values 
('1.2.3.4.5')
) as t(n) 
cross join 
(select k from (values (1),(2),(3),(4),(5),(0),(-1)) t1(k)) t1
order by n,k


;


Получаю результат:
NULL -1
Null 0
5 1
4 2
3 3
2 4
Null 5

Ожидалось одни строки с Null

Вопрос, почему???
...
Рейтинг: 0 / 0
26.11.2015, 16:14
    #39114195
Andrey Sribnyak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Где я не прав?
[quot Andrey Sribnyak]Если выполнить запрос:
Код: sql
1.
select case when char_length($1)< char_length(replace($1,'.',''))+4 and $2 between 1 and 4 then reverse(split_part(reverse($1),'.',$2)) 



Вопрос снят.
Сам дурак
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Где я не прав? / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]