|
Проблема с вызовом процедур внутри функции
|
|||
---|---|---|---|
#18+
Заранее приношу извинения если где-то туплю и прошу сильно не бить. Преамбула: Задачу получил на PostgreSQL. Знаком с ней всего пару дней. Нужно сортировку правильную сделать. Что-бы. Поля автор'1002Szreet' '1001Szreet' '2 Azreet' '2 Bareet' Сортировались с учетом цифр, а если цифры одинаковые с учетом букв которые идут за цифрами: автор'2 Azreet' '2 Bareet' '1001Szreet' '1002Szreet' Написал функцию, все считает, все работает. Начал доводить до нормального вида и столкнулся с проблемой: Изначальный селект на котором тестил выглядит примерно так NumbToStr - моя функция авторselect id, name from property order by (CASE WHEN to_number(substring(name from '^\d+'),'99G999D9S') IS NULL THEN substring(name, char_length(substring(name from '^\d+'))+1) ELSE NumbToStr(CAST(to_number(substring(name from '^\d+'),'99G999D9S') AS integer)) || substring(name, char_length(substring(name from '^\d+'))+1) END) Естественно order by выглядит вырвиглазно и нужно все это засунуть в функцию. и тут оказалось что процедура которая отлично работает в селекте не лезит в фунцкию авторCREATE OR REPLACE FUNCTION NumbToStr (adr text) RETURNS text AS' DECLARE i int; num int; res text; restText text; BEGIN restText = substring(name, char_length(substring(name from '^\d+'))+1); CASE WHEN to_number(substring(name from '^\d+'),'99G999D9S') IS NULL THEN return restText ELSE num = to_number(substring(num from '^\d+'),'99G999D9S') END ..... Подскажите каким образом, внутри функции NumbToStr вызвать substring и to_number? Самое сложное сделал, а на этой херне уже больше часа стопорюсь. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2017, 16:30 |
|
Проблема с вызовом процедур внутри функции
|
|||
---|---|---|---|
#18+
Ругается на эту - ( '^\d+' ) часть ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2017, 16:55 |
|
|
start [/forum/topic.php?fid=53&fpage=67&tid=1996255]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
32ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
others: | 280ms |
total: | 395ms |
0 / 0 |