2017-04-10 19 views
0

我列NameSal,我应该创造Name一个字符串,然后把*基于工资(1000 $ = *),因此,例如加“*”基于工资

Clark | 5000$ 
Smith | 4000$ 

看起来像:

EMPLOYEES_AND_THEIR_SALARIES 
------------------------------- 
Clark ***** 
Smith **** 

感谢您的答复。

+1

你能告诉至少你努力解决问题了吗?这个网站不是关于*为我编写代码* –

+0

似乎''*的数量取决于您的薪水价值的第一位数字。喜欢5000的5和4000的4.它让我知道这是否正确 – XING

回答

1

您可以使用rpad()来实现此目的。假设工资存储为数字:

select name, rpad('*', salary/1000, '*') 
+0

我想这不是OP想要的。 @Bob jarvis已经证明它是正确的。 OP想要'5000 $'然后'*****'。我的意思是'5000 $'的总长度,许多'*'。您的解决方案不正确。 – XING

+0

@XING。 。 。 'TRUNC(salary/1000)'和'salary/1000'之间的区别是什么,它将作为整数传递给函数?这两个答案是相同的。 –

+0

是的..即使这个答案现在似乎不正确你看OP问题。我要求澄清。 – XING

1

以下将提供你正在寻找的结果:

SELECT NAME, RPAD('*', TRUNC(SAL/1000), '*') 
    FROM YOUR_TABLE 

好运。

0

据我所知,下面的一个应该足够你的需要。

select first_name ||' '|| rpad('**',length(salary),'*') Name from employee; 
See Demo; 

表数据

SQL> select first_name , salary ,length(salary) from employee; 

FIRST_NAME    SALARY LENGTH(SALARY) 
-------------------- ---------- -------------- 
Dan      1234    4 
Helen      3213    4 
Akiko      9000    4 
Jackie     40000    5 
XING      40000    5 

输出:这里*是按照工资的长度。

SQL> select first_name ||' '|| rpad('**',length(salary),'*') Name 
     from employee ; 

    NAME 
    -------------------------------------------------------------------------------- 
    Dan **** 
    Helen **** 
    Akiko **** 
    Jackie ***** 
    XING ***** 
0
CREATE TABLE replicate_example (
Salary INT 
) 
INSERT INTO dbo.replicate_example 
    (Salary) 
VALUES (3000), (5000) 

SELECT CAST(Salary AS NVARCHAR) + ' ' + REPLICATE('*',Salary/1000) FROM  dbo.replicate_example 
+0

这不是预言。问题标记为Oracle。 – XING