powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / функции POSITION и UUID_TO_CHAR
9 сообщений из 9, страница 1 из 1
функции POSITION и UUID_TO_CHAR
    #39004540
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а почему запрос
Код: sql
1.
2.
select position('A',uuid_to_char(x)), uuid_to_char(x) from
(select gen_uuid() as x from rdb$database)

выдает такое результат:
Код: plaintext
1.
POSITION	UUID_TO_CHAR
1	D886CD9A-A602-45EC-AA7B-CC3AC12BACE2

Вроде бы первый символ не A
С уважением, Naf
...
Рейтинг: 0 / 0
функции POSITION и UUID_TO_CHAR
    #39004547
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, так и есть. Вспыхивают такие вопросы, и регулярно (это я Денису Симонову... ;)).
...
Рейтинг: 0 / 0
функции POSITION и UUID_TO_CHAR
    #39004548
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
потому что gen_uuid() вызывается дважды:

Код: sql
1.
select position('A', uuid_to_char(gen_uuid())), uuid_to_char(gen_uuid()) from rdb$database



и в невидимом тобой результате первой может быть как раз A
...
Рейтинг: 0 / 0
функции POSITION и UUID_TO_CHAR
    #39004557
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо, очень странное поведение, специально же обернул в подзапрос
...
Рейтинг: 0 / 0
функции POSITION и UUID_TO_CHAR
    #39004563
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот так можно попробовать, чтобы материализация шла:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
with recursive
r as
(
    select uuid_to_char(gen_uuid()) u from rdb$database
    union all
    select r.u from r where 1=0
)
select r.u, r.u, r.u, r.u
from r;

with recursive
r as
(
    select rand() u from rdb$database
    union all
    select r.u from r where 1=0
)
select r.u, r.u, r.u, r.u
from r;
...
Рейтинг: 0 / 0
функции POSITION и UUID_TO_CHAR
    #39004589
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а если так?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
create procedure MY_UUID
returns (
    RESULT char(16) character set OCTETS)
as
begin
  result = gen_uuid();
  suspend;
end


Код: sql
1.
2.
select uuid_to_char(result), uuid_to_char(result)
from my_uuid
...
Рейтинг: 0 / 0
функции POSITION и UUID_TO_CHAR
    #39004594
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

я работаю над этим. И много ещё над чем. Скоро выложу большое обновление как по 2.5 так и по 3.0.

P.S. Там где я сейчас нахожусь (глушь) интернет настолько медленный (2G), что проблематично даже принимать почту и читать этот форум, не то что файлы выкладывать.
...
Рейтинг: 0 / 0
функции POSITION и UUID_TO_CHAR
    #39004600
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Naf,

ещё как вариант

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
WITH T(X)
AS (SELECT
        (SELECT GEN_UUID() FROM RDB$DATABASE)
    FROM RDB$DATABASE)
SELECT
    POSITION('A', UUID_TO_CHAR(X)) as pos,
    UUID_TO_CHAR(X) as c1,
    UUID_TO_CHAR(X) as c2,
    UUID_TO_CHAR(X) as c3
FROM T
...
Рейтинг: 0 / 0
функции POSITION и UUID_TO_CHAR
    #39004610
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

тоже самое можно и без рекурсии

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
WITH T(X)
AS (SELECT
        MY_GEN_UUID()
    FROM RDB$DATABASE
    UNION ALL
    SELECT NULL FROM RDB$DATABASE WHERE 1=0)
SELECT
    POSITION('A', UUID_TO_CHAR(X)) as pos,
    UUID_TO_CHAR(X) as c1,
    UUID_TO_CHAR(X) as c2,
    UUID_TO_CHAR(X) as c3
FROM T
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / функции POSITION и UUID_TO_CHAR
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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