2014-01-27 54 views
-3

編寫一個查詢接受4個字符的示例-aBcD並將其從大寫格式轉換爲小寫格式,並將其轉換爲大寫格式即AbCd格式,您可以使用ASCII字符功能但不能使用任何PL/SQL代碼,它應該是唯一的一個SQL查詢查詢翻轉字母的案例

+0

創建像混合詞功能,並做到這一點的PL SQL,可重複使用的是.. –

+4

我需要的咖啡和一杯鬆餅,謝謝。 (請閱讀[這篇文章](http://whathaveyoutried.com)) – Barranka

+0

在Pl/SQL我們可以做到這一點,但我需要它在SQL查詢表格中,只有他們給了我一個提示,我們也可以在這裏使用ASCII功能 – ejvar

回答

2
with letters as 
    (
    select 
      substr('MaHeSh',level,1) as letter,level row_label 
    FROM dual 
    connect by level<= length('MaHeSh') 
    ) 
    select 
      listagg(
      case when ascii(letter) between ascii('a') and ascii('z') then 
      upper(letter) 
      else 
      lower(letter) 
      end,'') within group (order by row_label) as flipped 
    from 
    letters 

結果

FLIPPED 

mAhEsH 

工作

我們將這個單詞拆分爲字母,並將它們轉換爲使用substr()函數的行

SUBSTR('Mahesh',2,1) = 'a'提取第二個字母。使用connect by,我們生成等於單詞長度的虛擬行,並像下面一樣逐字提取字母。稍後進行一次ascii檢查並相應地翻轉箱子。 LISTAGG會將所有字母重新組合成一個單詞。

產生的視圖(行標籤是保存了字母順序)

LETTER ROW_LABEL 
M 1 
a 2 
H 3 
e 4 
S 5 
h 6 
+0

這將如何工作,你能解釋我 – ejvar

+0

盡我所能解釋在我的答案! –

+2

我認識寫過sql/plsql超過10年的人,並且無法解決可變數量字符的問題。好答案... –