Oracle SQL技术问题:如何补全姓名至10位并按薪资生成对应$符号
Oracle SQL 两个格式化需求的实现方案
1. 姓名补圆点至10个字符长度
用Oracle自带的RPAD函数就能搞定,它会在字符串右侧填充指定字符,直到达到你要的总长度。
语法:RPAD(原始字符串, 目标总长度, 填充字符)
示例代码:
SELECT name, RPAD(name, 10, '.') AS formatted_name FROM your_table;
比如姓名是Sara时,RPAD('Sara', 10, '.')会返回Sara......(4个原字符加6个圆点,总长度刚好10)。要是姓名本身已经超过10字符,函数会直接返回原字符串,不会做截断处理。
2. 根据薪资生成对应数量的美元符号
先通过TRUNC函数算出薪资里包含多少个100的整数倍,再用RPAD生成对应数量的$就行。
语法:RPAD('', TRUNC(salary/100), '$')
示例代码:
SELECT salary, RPAD('', TRUNC(salary/100), '$') AS salary_dollars FROM your_table;
- 薪资为500时,
TRUNC(500/100)=5,生成$$$$$ - 薪资为350时,
TRUNC(350/100)=3,生成$$$ - 薪资为99时,
TRUNC(99/100)=0,生成空字符串
如果要把两个需求合并到一个查询里,完整示例如下:
SELECT name, RPAD(name, 10, '.') AS formatted_name, salary, RPAD('', TRUNC(salary/100), '$') AS salary_dollars FROM your_table;
内容的提问来源于stack exchange,提问作者soooe
相关产品推荐
相关产品推荐

