我想知道如何在SQL*Plus中实现与REPEAT()相同的功能.例如,考虑这个问题:显示字符'*'的次数与为给定表中的每个条目指定的整数属性指定的值一样多.
a_h*_*ame 23
挑剔:SQL*Plus没有任何功能.所述数据库服务器(Oracle)的提供执行SQL的能力,并且具有这样的功能:
你在找 rpad()
select rpad('*', 10, '*')
from dual;
Run Code Online (Sandbox Code Playgroud)
将输出
**********
Run Code Online (Sandbox Code Playgroud)
更多细节可以在手册中找到:https://docs.oracle.com/cd/E11882_01/server.112/e41084/functions159.htm#SQLRF06103
对于单个字符,接受的答案工作正常。
但是,如果给定字符串中有多个字符,则需要RPAD
与这样的length
函数一起使用。
WITH t (str) AS
(
SELECT 'a'
FROM DUAL
UNION ALL SELECT 'abc'
FROM DUAL
UNION ALL SELECT '123'
FROM DUAL
UNION ALL SELECT '#+-'
FROM DUAL
)
SELECT RPAD(str, 5*LENGTH(str), str) repeated_5_times
FROM t;
Run Code Online (Sandbox Code Playgroud)
输出:
REPEATED_5_TIMES
---------------
aaaaa
abcabcabcabcabc
123123123123123
#+-#+-#+-#+-#+-
Run Code Online (Sandbox Code Playgroud)