我有一个包含XMLType的表。我的标签包含Å和Ö,例如“ÅR” 我使用Oracle SQL Developer解析了它,但是一旦我尝试在Sql Plus中使用相同的查询,它就不会接受åäö。不知道怎么解决这个问题。
所以在终端这个(raw或.sql文件中)
select count(d.year)
from fic data, XMLTable('/Arkiv/Record'
PASSING data.xmldata
COLUMNS
YEAR varchar2(20) PATH 'ÅR'
) d where data.id =7;
会出现以下错误:
ORA-19114: XPST0003 - error during parsing the XQuery expression:
LPX-00800: XQuery invalid token ''
1 ÅR
- ^
答案 0 :(得分:0)
很可能这是sqlplus(或你正在调用它的shell)的问题,以错误的编码提供数据。
用UTL_I18N.raw_to_char ( HEXTORAW ( '<character_as_octet_sequence>' ), '<charset_encoding>' )
替换文字中的非ascii-chars。这会将字符转换为数据库字符集,并且应该通过其间的任何工具,因为您只需要us-ascii符号进行规范。
:
UTL_I18N.raw_to_char ( HEXTORAW ( 'C5' ), 'WE8ISO8859P15' )
UTL_I18N.raw_to_char ( HEXTORAW ( 'D6' ), 'WE8ISO8859P15' )