哈希函数 sql

Hash function sql

我想在 table 上创建一个哈希列。 我想像串联一样将一行的所有值放在该列中,并用任何符号替换空值。每个单元格应该用分隔符分隔。

例如

A  B    C    D  HashColumn
1  2    Null 4  1/2/_/4
12 Null 4    5  12/_/4/5    

我想在多个 table 上执行此操作,因此需要对此进行动态查询。

请告诉我如何在 bigquery 中执行此操作

试试这个:

select IFNULL(CAST(A as string), '_') || '/' 
    || IFNULL(CAST(B as string), '_') || '/' 
    || IFNULL(CAST(C as string), '_') || '/' 
    || IFNULL(CAST(D as string), '_')
from mytable

我会推荐以下简单方法

select *, format('%t', t) HashColumn
from your_table t      

如果应用于您问题中的示例数据 - 输出为

这对我来说看起来足够好作为哈希。 但是如果你真的需要你在问题中提到的格式 - 你可以做一些额外的字符串处理 - 例如

select *, 
  replace(trim(format('%t', t), '()'), 'NULL', '_') HashColumn
from your_table t

在这种情况下 - 输出是