You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 20:23:14