2014-01-05 53 views
-1

我有一個包含兩列(名字和姓氏)的表,我需要一個查詢或PL/Sql腳本,它們將這兩個字符串連接起來並以initcap()形式顯示輸出結果(例如 ) LAST_NAMEFIRST_NAME您好 拉梅什帕瓦爾連接列並在oracle中顯示

輸出應爲Rameshpawar(p應該在小的情況下)

+0

你嘗試尋找在[SQL語言參考(http://docs.oracle.com/cd/E11882_01/server.112/e41084/index.htm)?該索引包含'concat()'函數,連接運算符和'initcap()'函數的條目。他們都有例子。 –

+0

INITCAP()'不會做任何OP想要的,如果有任何名稱中的非字母數字字符(即「Liam O'Brien」或「Bob Smith-Jones」) – MT0

回答

0

你的意思是你想這樣的事情?

select First_name || Lower(Last_name) from table_name; 
+0

這個答案假設名字都是所需的格式 - 如果他們不是,那麼它不會工作。 – MT0

1

SQL Fiddle

的Oracle 11g R2架構設置

CREATE TABLE table_name (First_Name, Last_Name) AS 
      SELECT 'Ramesh', 'Pawar' FROM DUAL 
UNION ALL SELECT 'BOB', 'SmItH-JoNeS' FROM DUAL 
UNION ALL SELECT 'liam', 'O''Brien' FROM DUAL; 

查詢1

如果所有有在名稱中不包含非字母數字字符,那麼你可以使用INITCAP

SELECT INITCAP(First_Name || Last_Name) AS Name 
FROM table_name 

Results

|   NAME | 
|----------------| 
| Rameshpawar | 
| Bobsmith-Jones | 
| Liamo'Brien | 

查詢2

然而,從上面的結果,你可以看到,如果你有一個雙姓這是行不通的;在這種情況下,你需要做這樣的事情:

SELECT UPPER(SUBSTR(First_Name || Last_Name, 1, 1)) || LOWER(SUBSTR(First_Name || Last_Name, 2)) AS Name 
FROM table_name 

Results

|   NAME | 
|----------------| 
| Rameshpawar | 
| Bobsmith-jones | 
| Liamo'brien | 

查詢3

如果First_Name列非空,那麼你可以簡化它到:

SELECT UPPER(SUBSTR(First_Name, 1, 1)) || LOWER(SUBSTR(First_Name || Last_Name, 2)) AS Name 
FROM table_name 

Results

|   NAME | 
|----------------| 
| Rameshpawar | 
| Bobsmith-jones | 
| Liamo'brien | 
+0

謝謝你...我會試着:) – user3162380