校验和MD5在postgresql中生成行号
Checksum MD5 to generate row number in postgresql
我正在尝试执行在我的错误报告中找到的以下查询。
当我们尝试 运行 R 包时生成错误报告。此错误报告可帮助我们了解错误出在哪里以及如何重现错误。经过调查,我能够看到它是在 R 包执行时导致问题的下面的查询。
select co.*, p.*,
row_number() over (order by ABS(CHECKSUM(MD5(RANDOM()::TEXT || CLOCK_TIMESTAMP()::TEXT))) % 123456789) rn
from s1.depat co
join s2.person p
on co.subject_id = p.person_id
我了解 row_number 函数用于生成行号,但看起来 Postgresql 不支持所有这些函数,例如 Checksum
和 MD5
。
我收到以下错误
ERROR: function checksum(text) does not exist
LINE 2: row_number() over (order by ABS(CHECKSUM(MD5(RANDOM()::TE...
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
SQL state: 42883
Character: 54
如何避免上述错误并使其在 postgresql 中正常工作?
在 Postgres 中,您将使用 random()
:
select co.*, p.*,
row_number() over (order by random()) as rn
from s1.depat co join
s2.person p
on co.subject_id = p.person_id;
checksum()
的使用表明查询生成器认为您已连接到 SQL 服务器。某处可能有一个参数让它知道生成有效的 Postgres 代码。
我正在尝试执行在我的错误报告中找到的以下查询。
当我们尝试 运行 R 包时生成错误报告。此错误报告可帮助我们了解错误出在哪里以及如何重现错误。经过调查,我能够看到它是在 R 包执行时导致问题的下面的查询。
select co.*, p.*,
row_number() over (order by ABS(CHECKSUM(MD5(RANDOM()::TEXT || CLOCK_TIMESTAMP()::TEXT))) % 123456789) rn
from s1.depat co
join s2.person p
on co.subject_id = p.person_id
我了解 row_number 函数用于生成行号,但看起来 Postgresql 不支持所有这些函数,例如 Checksum
和 MD5
。
我收到以下错误
ERROR: function checksum(text) does not exist
LINE 2: row_number() over (order by ABS(CHECKSUM(MD5(RANDOM()::TE...
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
SQL state: 42883
Character: 54
如何避免上述错误并使其在 postgresql 中正常工作?
在 Postgres 中,您将使用 random()
:
select co.*, p.*,
row_number() over (order by random()) as rn
from s1.depat co join
s2.person p
on co.subject_id = p.person_id;
checksum()
的使用表明查询生成器认为您已连接到 SQL 服务器。某处可能有一个参数让它知道生成有效的 Postgres 代码。