我试图从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