为此,还有很多更优雅的解决方案。
在Postgres中,SELECT
允许使用表名in ,其类型为ROW
。如果将其强制转换为typeTEXT
,则它会将所有列串联在一起,而这些字符串实际上是JSON。
有了这个,您可以获取md5
所有列,如下所示:
SELECT md5(mytable::TEXT)
FROM mytable
如果只想使用某些列,请使用ROW
构造函数并将其强制转换为TEXT
:
SELECT md5(ROW(col1, col2, col3)::TEXT)
FROM mytable
关于此解决方案的另一个不错的特性是,与空字符串相比,它md5
会有所不同NULL
。
强制性SQLFiddle。