我有一個包含兩列(名字和姓氏)的表,我需要一個查詢或PL/Sql腳本,它們將這兩個字符串連接起來並以initcap()形式顯示輸出結果(例如 ) LAST_NAMEFIRST_NAME您好 拉梅什帕瓦爾連接列並在oracle中顯示
輸出應爲Rameshpawar(p應該在小的情況下)
我有一個包含兩列(名字和姓氏)的表,我需要一個查詢或PL/Sql腳本,它們將這兩個字符串連接起來並以initcap()形式顯示輸出結果(例如 ) LAST_NAMEFIRST_NAME您好 拉梅什帕瓦爾連接列並在oracle中顯示
輸出應爲Rameshpawar(p應該在小的情況下)
你的意思是你想這樣的事情?
select First_name || Lower(Last_name) from table_name;
這個答案假設名字都是所需的格式 - 如果他們不是,那麼它不會工作。 – MT0
的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
| 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
| 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
| NAME |
|----------------|
| Rameshpawar |
| Bobsmith-jones |
| Liamo'brien |
謝謝你...我會試着:) – user3162380
你嘗試尋找在[SQL語言參考(http://docs.oracle.com/cd/E11882_01/server.112/e41084/index.htm)?該索引包含'concat()'函數,連接運算符和'initcap()'函數的條目。他們都有例子。 –
INITCAP()'不會做任何OP想要的,如果有任何名稱中的非字母數字字符(即「Liam O'Brien」或「Bob Smith-Jones」) – MT0