哈希函数 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
在这种情况下 - 输出是
我想在 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
在这种情况下 - 输出是