Oracle中按原数据长度生成随机字符串替换tableA.Names数据的方法
问题描述
我的tableA.Names表现有数据如下:
83601 Thomas Levy Adam Jonson
我需要用随机数据替换原有数据,目前可使用dbms_random.string('a',10)生成随机字符串,示例结果为:
OflRDIBSoN
希望生成类似如下格式的结果:
45618 ERGHNYU IULB.
即对应原数据各部分长度:
83601 - 5位 Thomas - 6位 Levy - 4位
请问是否可以通过如下方式实现:dbms_random.string('a',5) + dbms_random.string('a',6) + dbms_random.string('a',4)?
解答
你这个写法没法直接实现需求,主要有两个问题:
- Oracle中字符串拼接不能用
+运算符,得用||或者concat函数; - 你的写法会把三个随机字符串直接连在一起,没有空格分隔,不符合你想要的分段格式。
正确的写法应该给各段随机字符串加上空格分隔,比如:
dbms_random.string('a',5) || ' ' || dbms_random.string('a',6) || ' ' || dbms_random.string('a',4)
另外补充一点:如果需要开头的5位是数字(和原数据的83601格式一致),可以用dbms_random.value生成数字,写法如下:
TRUNC(dbms_random.value(10000, 99999)) || ' ' || dbms_random.string('a',6) || ' ' || dbms_random.string('a',4)
内容的提问来源于stack exchange,提问作者4est
相关产品推荐
相关产品推荐

