Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于在postgresql中生成行号的校验和MD5_Sql_Postgresql_Md5_Checksum - Fatal编程技术网

用于在postgresql中生成行号的校验和MD5

用于在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

我正在尝试执行在错误报告中找到的以下查询

尝试运行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()


使用
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;