2017-04-10 42 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