Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 甲骨文中的“?”(倒问号)字符_Sql_Oracle_Nls Lang - Fatal编程技术网

Sql 甲骨文中的“?”(倒问号)字符

Sql 甲骨文中的“?”(倒问号)字符,sql,oracle,nls-lang,Sql,Oracle,Nls Lang,我在数据库表中发现了?字符的倒问号代替了单引号字符 有人能告诉我如何避免这个角色出现在桌子上吗 有许多行包含此字符的文本,但并非所有单引号都指向此符号 我甚至无法过滤行以再次使用单引号更新此字符 当我喜欢%?%时,它会过滤包含普通问号的文本。通常有两种可能性: 您的数据库表中确实有?个字符,这是由于插入数据时NLS_LANG设置错误造成的,或者数据库字符集不支持特殊字符。在这种情况下,类似“?%”的条件应该有效。然而,这也意味着您的数据库中有损坏的数据,几乎不可能更正它们,因为?代表任何错误的字

我在数据库表中发现了?字符的倒问号代替了单引号字符

有人能告诉我如何避免这个角色出现在桌子上吗

有许多行包含此字符的文本,但并非所有单引号都指向此符号

我甚至无法过滤行以再次使用单引号更新此字符


当我喜欢%?%时,它会过滤包含普通问号的文本。通常有两种可能性:

您的数据库表中确实有?个字符,这是由于插入数据时NLS_LANG设置错误造成的,或者数据库字符集不支持特殊字符。在这种情况下,类似“?%”的条件应该有效。然而,这也意味着您的数据库中有损坏的数据,几乎不可能更正它们,因为?代表任何错误的字符。 由于NLS_LANG设置错误或字体不支持特殊字符,您的客户端(例如SQL*Plus)无法显示特殊字符。 您使用哪个客户机SQL*Plus、TOAD、SQL Developer等

NLS_LANG环境变量resp是什么。您的注册表项HKLM\SOFTWARE\ORACLE\key\uu%ORACLE\u HOME\u NAME%\NLS\u LANG或HKLM\SOFTWARE\Wow6432Node\ORACLE\key\u%ORACLE\u HOME\u NAME%\NLS\u LANG


选择DUMP…,您会得到什么,从你的桌子上取1016?

这真的是一个简单的引文吗?如果它们实际上是某种智能引号,那么它们在windows-1252中确实有映射,但没有ISO-8859映射,因此,如果您的数据库字符集是ISO-8859-1,并且您尝试插入一些windows-1252文本,Oracle会尝试将windows-1252转换为ISO-8859-1,并使用chr191来表示不可映射的字符。chr191恰好是开头的问号

您可以通过执行此复制来检查选择是否保留智能引号:

select dump('‘’“”') from dual
这种行为基本上是正确的,因为您要求Oracle做的事情无法完成,尽管这不是很直观


请参见和字符集以进行比较。请注意,windows使用的是ISO字符集中未使用的127-159范围

该字符可能表示不可打印字符。通常在尝试将非ASCII字符作为字符处理时。这是客户端的显示问题。看看这些: