對於ASCII以及CHR函數的用法,Oracle給出的解釋是:
ASCII(x)gets the ASCII value of the character X, CHR() and ASCII() have the opposite effect.
即:ASCII函數是用於將字元轉換成其相應的ASCII碼,而CHR函數作用則恰好相反;
下面我來看一些簡單的例子:
SELECT ASCII('x'), ASCII('y'),ASCII('z') from dual;
語句執行的結果為 120,121,122(即字元x,y,z對應的ASCII碼分別為120,121,122)。那麼SELECT CHR('120'), CHR('121'),CHR('122') from dual;的結果我們應該很容易知道。
上面我們的例子中都是單個字元,那麼如果是多個字元會有什麼結果呢?SELECT ASCII('xy') from dual;結果為120;SELECT ASCII('x') from dual;結果為120。從這兩個例子中可能我們已經看出了什麼。
"ASCII gives the ascii value of the first character of a string"即:ASCII函數只對你給出的字串中的第一個字元起作用;
最後我們再介紹幾個常用的chr()函數,chr(9);chr(10);chr(13);chr(32);chr(34),其中chr(9)是tab,chr(10)是分行符號,chr(13)是斷行符號符,chr(32)是空格符,chr(34)是雙引號“"”。
可能有人會對斷行符號和換行有些分不清,因為平常這兩個符號是合在一起使用的。斷行符號即回到行首,換行即換到下一行。那我們在oracle中用chr(13)和chr(10)會有區別嗎?(結果沒有區別,因為現在的語言會自動把它們轉成“斷行符號換行”)。即
declare
begin
dbms_output.put_line('huiche');
dbms_output.put_line(chr(10));
dbms_output.put_line('hhh');
end;
同
declare
begin
dbms_output.put_line('huiche');
dbms_output.put_line(chr(13));
dbms_output.put_line('hhh');
end;
兩個塊輸出的結果是完全一樣的。