用于在postgresql中生成行号的校验和MD5
我正在尝试执行在错误报告中找到的以下查询 尝试运行R包时会生成错误报告。此错误报告可帮助我们了解错误的位置以及如何再现错误。经过调查,我可以看到,这是下面的查询导致的问题,而R包的执行用于在postgresql中生成行号的校验和MD5,sql,postgresql,md5,checksum,Sql,Postgresql,Md5,Checksum,我正在尝试执行在错误报告中找到的以下查询 尝试运行R包时会生成错误报告。此错误报告可帮助我们了解错误的位置以及如何再现错误。经过调查,我可以看到,这是下面的查询导致的问题,而R包的执行 select co.*, p.*, row_number() over (order by ABS(CHECKSUM(MD5(RANDOM()::TEXT || CLOCK_TIMESTAMP()::TEXT))) % 123456789) rn from s1.depat co jo
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()
:
使用
checksum()
表示查询生成器认为您已连接到SQL Server。可能有一个参数让它知道如何生成有效的Postgres代码。您可以通过只使用以下函数来避免错误:RANDOM::TEXT
做什么?是否仍然可以执行并查看RANDOM::TEXT
的外观,或者CLOCK\u TIMESTAMP()::TEXT
::
是类型转换。查看其他功能的文档。PostgreSQL中没有校验和
函数。感谢您的回复。向上投票。但是MD5呢。MD5虽然可以在postgres中使用,但不能用作序列号。对吗?它把它变成了一根绳子?@伟大的。如果要查找可重复的序列,可以使用MD5()
。但是SQL Server需要函数链,因为它没有一个简单的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;