REPEAT函数在Oracle中等效

God*_*JAR 10 sql oracle

我想知道如何在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


Kau*_*yak 6

对于单个字符,接受的答案工作正常。

但是,如果给定字符串中有多个字符,则需要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)