我¿
在数据库表中找到了“”字符(反问号)代替了单引号 ( '
) 字符。
谁能让我知道如何避免这个角色出现在桌子上。
有许多行包含带有此字符的文本,但并非所有单引号都指向此 ¿ 符号。
我什至无法过滤行以再次使用单引号更新此字符(¿)。
当我用户喜欢“%¿%”时,它会过滤我包含普通问号(?)的文本
一般有两种可能:
¿
错误导致的字符NLS_LANG
(或数据库字符集不支持特殊字符)。在这种情况下,LIKE '%¿%'
条件应该有效。但是,这也意味着您的数据库中有损坏的数据,并且几乎不可能更正它们,因为¿
代表任何错误的字符。NLS_LANG
您使用哪个客户端(SQL*Plus、TOAD、SQL Developer 等)?
你的NLS_LANG
环境变量是什么,分别是什么。您的注册表项HKLM\SOFTWARE\ORACLE\KEY_%ORACLE_HOME_NAME%\NLS_LANG
或HKLM\SOFTWARE\Wow6432Node\ORACLE\KEY_%ORACLE_HOME_NAME%\NLS_LANG
?
当您DUMP(... , 1016)
从表中选择时,您会得到什么?
它真的是一个简单的引用(ASCII 39)吗?如果它们实际上是某种“智能引号”,它们在 windows-1252 中确实有映射,但它们没有 ISO-8859 映射,所以如果您的数据库字符集是 ISO-8859-1 并且您尝试插入一些 windows- 1252 文本,Oracle 尝试从 windows-1252 转换为 ISO-8859-1 并使用 chr(191) 表示不可映射的字符。chr(191) 恰好是开头的问号。
您可以通过执行此检查(复制选择以保留智能引号):
select dump('‘’“”') from dual
这种行为基本上是“正确的”,因为您要求 Oracle 做的事情无法完成,尽管它不是很直观。
请参阅windows-1252、ISO8859-1和ISO-8859-15字符集进行比较。请注意,Windows 使用 ISO 字符集中未使用的范围 127-159