Sql 是否有可能获得varchar';什么是唯一的数值?
样本: 预期产出:Sql 是否有可能获得varchar';什么是唯一的数值?,sql,postgresql,Sql,Postgresql,样本: 预期产出: select 'test1' union all select 'test2' 我所尝试的: 我试着用md5来做这件事,但它不是数字类型,而且可能是重复的 value 5XXXXXXX94 5XXXXXXXX6 创建一个表,用于保存字符串和代码之间的关系。创建函数,该函数接受字符串,在表中搜索该字符串,如果未找到,则生成并插入唯一的随机(或下一步使用某些生成器)代码,然后返回代码(已找到或已生成) 或者创建一个函数,生成一些手工制作的“散列”。例如,它可以获取字符串中
select 'test1'
union all
select 'test2'
我所尝试的:
我试着用md5来做这件事,但它不是数字类型,而且可能是重复的
value
5XXXXXXX94
5XXXXXXXX6
创建一个表,用于保存字符串和代码之间的关系。创建函数,该函数接受字符串,在表中搜索该字符串,如果未找到,则生成并插入唯一的随机(或下一步使用某些生成器)代码,然后返回代码(已找到或已生成)
或者创建一个函数,生成一些手工制作的“散列”。例如,它可以获取字符串中每个字符的代码,并用它执行一些确定性计算。在这种情况下,您不需要在关系表中使用。或者您可以使用CRC32将其转换为十进制形式(最多10位)。创建一个表格,该表格将保存字符串和代码之间的关系。创建函数,该函数接受字符串,在表中搜索该字符串,如果未找到,则生成并插入唯一的随机(或下一步使用某些生成器)代码,然后返回代码(已找到或已生成)
或者创建一个函数,生成一些手工制作的“散列”。例如,它可以获取字符串中每个字符的代码,并用它执行一些确定性计算。在这种情况下,您不需要在关系表中使用。或者您可以使用CRC32将其转换为十进制形式(最多10位)。编辑:我已经更改了函数 您可以使用regexp\u split\u to\u表
不幸的是,它不是独一无二的。它只计算给定单词的ascii数之和 编辑:我已经更改了功能 您可以使用regexp\u split\u to\u表
不幸的是,它不是独一无二的。它只计算给定单词的ascii数之和 @Akina这是个好主意,你能回答下面的问题吗?如果没有其他答案,我会将其标记为答案。转换为答案。@Akina这是个好主意,你能在下面回答吗?如果没有其他答案,我会将其标记为答案。转换为答案。
select md5('test1')
union all
select md5('test2')
with x as (
select 'test1' as word
union all
select 'test2'
union all
select 'test2'
union all
select 'test2'
union all
select 'test1'
union all
select 'test1'
)
select
x.word,
(select ('x'||substr(md5(x.word),1,16))::bit(64)::bigint)
from x;
with x as (
select 'test1' as word
union all
select 'test2'
union all
select 'test2'
union all
select 'test2'
union all
select 'test1'
union all
select 'test1'
)
select
x.word,
(select sum(ascii(regexp_split_to_table)) from regexp_split_to_table(x.word, ''))
from x;