我開始學習Oracle PL/SQL,並且下載了Oracle Database 10g Express,其中包含相同的示例和問題。Oracle PL/SQL字符串格式化
有一個我無法解決的問題。
的問題是:
寫一個SQL查詢來檢索的第一個名字,姓氏,並在員工的代碼被發現如下的每個員工的代碼 : 首先刪除所有出現字符「i」和「l」,然後, 連接名稱的前六個字母,破折號「 - 」和 姓氏的最後六個字符,其中只有代碼的第一個和最後一個 字符應該是大寫。如果名稱不包含6個字母,則將下劃線(「」)放在該部分的末尾;如果 姓氏不包含六個字母,則將下劃線(「」)改爲 作品的開頭。根據姓氏排列列表,然後根據姓名排列 。
輸出必須是這樣的
我寫的東西,但它是完全以錯誤的,不清晰。我應該修復哪些部分?
SELECT employees.first_name, employees.last_name,
replace(replace(first_name,'l',''),'i'),
initcap(substr(rpad(employees.first_name,6,'_'),1,6)) || '-' ||
case when length(employees.last_name)>4
then lower(substr(employees.last_name,-5,4))
else lower(substr(lpad(employees.last_name,5,'_'),-5,4)) end ||
upper(substr(employees.last_name,-1,1)) code
FROM employees
ORDER BY last_name, first_name;
這是我的輸出(錯誤的)
在替換(替換(first_name,'l',''),'我')'你是什麼**實際上**替換「我」? –
實際上我想用null或「」代替它,但是如果我添加替換字符,它會給出錯誤「參數數量太多」 – hakiko
那麼爲什麼你不?爲什麼你只用空字符串替換「'l'」,而不是「'i」「? –