powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Где я не прав?
2 сообщений из 2, страница 1 из 1
Где я не прав?
    #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
Где я не прав?
    #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
2 сообщений из 2, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Где я не прав?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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