【发布时间】:2020-03-04 08:18:00
【问题描述】:
我正在尝试执行在我的错误报告中找到的以下查询。
当我们尝试运行 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 中工作?
【问题讨论】:
-
你可以通过只使用documented in the manual的函数来避免错误
-
请问
RANDOM::TEXT是做什么的?无论如何要执行并查看RANDOM::TEXT的外观或CLOCK_TIMESTAMP()::TEXT -
::是一个类型转换。查看其他功能的文档。 PostgreSQL 中没有checksum函数。
标签: sql postgresql md5 checksum