我需要用随机字符串更新DB2 LUW数据库的几个字段中的数据。这是为了屏蔽敏感信息。我在Oracle中使用了以下函数,并在DB2中寻找等效函数:
DBMS_RANDOM.STRING ('L', length(NAME))
这里NAME是字段,L代表小写。此函数生成一个小写字符串,其长度与字段值相同。
我发现了在DB2中生成随机字符串的以下方法:
CHR(INT(RAND()*26)+65)
|| CHR(INT(RAND()*26)+65)
|| CHR(INT(RAND()*26)+65)
|| CHR(INT(RAND()*26)+65)
|| CHR(INT(RAND()*26)+65)
|| CHR(INT(RAND()*26)+65)
|| CHR(INT(RAND()*26)+65)
|| CHR(INT(RAND()*26)+65)
我的查询- 1)如何生成小写的随机字符串?2)如何限制生成的字符串的长度与字段值的长度相同(类似于oracle函数)?
谢谢
2条答案
按热度按时间3npbholx1#
Rajat将此与Rpad一起用于长度,而不是1000000000
7jmck4yq2#
两件事:
97
(ASCII码“a”)而不是65
(ASCII码“A”)。例如,假设您的名称长度最多为30个字符:
结果:
确保使用表达式
min(30, length(name))
来表示长度,否则,如果您要获取比varchar中可用的字符更多的字符,DB2会崩溃。