我試圖從Oracle表中提取數據。該列被定義爲char(40)幷包含擴展的ASCII值。目前在SQL * Plus中,擴展字符顯示爲「顛倒」問號。我需要能夠提取具有十進制值> 128的ASCII字符並以擴展或8位編碼方案顯示。
Oracle ASCII字符集 - .Net擴展
- 電流輸出
從MYTABLE選擇MyField的;
[email protected]¿pmxJ¿¿¿.¿¿¿P9¿¿¿¿¿+¿¿w)¿@Ÿ@B¿¿¿
- 十進制值
典型值= 96長度= 40:
98,64,189,112,109,120,74,156,27,231,167,46,224,28,130,183,80,57,202,232,150,239,144,43,169,1,186,119,41,254,64,89,64,12,19,8,66,194,136,210
- 數據庫字符集
SQL> SELECT * FROM NLS_DATABASE_PARAMETERS;
參數值
------------------------------ ------ ----------------------------------
NLS_CSMIG_SCHEMA_VERSION 5
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
個
NLS_CURRENCY $
NLS_ISO_CURRENCY AMERICA
NLS_NUMERIC_CHARACTERS。,
NLS_CHARACTERSET US7ASCII
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD-MON-RR
NLS_DATE_LANGUAGE AMERICAN
NLS_SORT BINARY
參數值
------------------------------ ------ ----------------------------------
NLS_TIME_FORMAT HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT HH.M I.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY $
NLS_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE
NLS_NCHAR_CHARACTERSET UTF8
NLS_RDBMS_VERSION 10.2.0.3.0
我沒有很多與Oracle的經驗。任何幫助將不勝感激!
感謝, 布倫南
我能夠以十進制格式提取數據,並在.NET函數處理它沒有問題。這個SQL語句有點麻煩。我正在嘗試編寫一個函數來幫助查詢。我在創建函數時遇到問題。
當前的SQL語句:
select DECRYPTDATA(
ASCII(SUBSTR(ACTIONCD,1,1)) || ',' ||
ASCII(SUBSTR(ACTIONCD,2,1)) || ',' ||
ASCII(SUBSTR(ACTIONCD,3,1)) || ',' ||
ASCII(SUBSTR(ACTIONCD,4,1)) || ',' ||
ASCII(SUBSTR(ACTIONCD,5,1)) || ',' ||
ASCII(SUBSTR(ACTIONCD,6,1)) || ',' ||
ASCII(SUBSTR(ACTIONCD,7,1)) || ',' ||
ASCII(SUBSTR(ACTIONCD,8,1)) || ',' ||
ASCII(SUBSTR(ACTIONCD,9,1)) || ',' ||
ASCII(SUBSTR(ACTIONCD,10,1)) || ',' ||
ASCII(SUBSTR(ACTIONCD,11,1)) || ',' ||
ASCII(SUBSTR(ACTIONCD,12,1)) || ',' ||
ASCII(SUBSTR(ACTIONCD,13,1)) || ',' ||
ASCII(SUBSTR(ACTIONCD,14,1)) || ',' ||
ASCII(SUBSTR(ACTIONCD,15,1)) || ',' ||
ASCII(SUBSTR(ACTIONCD,16,1)), '1' )
from ORDERACTIONS where KEYNUM = 1
我想作一個快速的函數返回此字符串。
下面是不會編譯的函數。有什麼建議麼?
create or replace function ASCIITODEC(p_actioncd VARCHAR2)
return VARCHAR2 is
begin
return ASCII(SUBSTR(p_actioncd,1,1)) || ',' ||
ASCII(SUBSTR(p_actioncd,2,1)) || ',' ||
ASCII(SUBSTR(p_actioncd,3,1)) || ',' ||
ASCII(SUBSTR(p_actioncd,4,1)) || ',' ||
ASCII(SUBSTR(p_actioncd,5,1)) || ',' ||
ASCII(SUBSTR(p_actioncd,6,1)) || ',' ||
ASCII(SUBSTR(p_actioncd,7,1)) || ',' ||
ASCII(SUBSTR(p_actioncd,8,1)) || ',' ||
ASCII(SUBSTR(p_actioncd,9,1)) || ',' ||
ASCII(SUBSTR(p_actioncd,10,1)) || ',' ||
ASCII(SUBSTR(p_actioncd,11,1)) || ',' ||
ASCII(SUBSTR(p_actioncd,12,1)) || ',' ||
ASCII(SUBSTR(p_actioncd,13,1)) || ',' ||
ASCII(SUBSTR(p_actioncd,14,1)) || ',' ||
ASCII(SUBSTR(p_actioncd,15,1)) || ',' ||
ASCII(SUBSTR(p_actioncd,16,1)))
end ASCIITODEC;
/
感謝, 布倫南
代碼是通過正確縮進輸入的b它在這裏以連續格式顯示。無論如何,你可以按下輸入後;使之可讀 – Aziz 2009-11-17 16:15:18