2016-02-02 4 views
1

Я нашел знак «¿» в виде таблицы (') в таблицах базы данных.«¿» (инвертированный знак вопроса) символ в оракуле

Может ли кто-нибудь сообщить мне, как я могу избежать этого символа из таблицы.

Существует много строк, содержащих текст с этим символом, но не все одинарные кавычки обращаются к этому символу ¿.

Я даже не могу фильтровать строки, чтобы обновить этот символ (¿) с помощью одной кавычки снова.

Когда я пользователь, как «% ¿%» фильтрует мне текст, содержащий обычный знак вопроса

+0

Возможно, что ¿означает «непечатаемый» символ. Обычно при попытке обрабатывать символы, отличные от ASCII, в качестве символа. – jarlh

+0

Это проблема с вашим клиентом. См. Http: // stackoverflow.com/questions/25810768/why-oracle-shows-for-special-characters-like-% C3% A5% C3% A4% C3% B6 –

+0

Посмотрите все это: http://stackoverflow.com/questions/35154057/oracle -SQL-поиск символов-в-данных/35156096 # 35156096 –

ответ

1

В целом существуют две возможности (?):

  1. таблицы базы данных действительно имеют ¿ символов, вызванных неправильными настройками NLS_LANG, когда данные были вставлены (или набор символов базы данных не поддерживает специальный символ). В этом случае должно работать условие LIKE '%¿%'. Однако это также означает, что у вас есть поврежденные данные в вашей базе данных, и их почти невозможно исправить, потому что ¿ означает любой неправильный символ.
  2. Ваш клиент (например, SQL * Plus) не может показать специальный символ, вызванный неправильными настройками 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) со своего стола?

0

Действительно ли это была простая цитата (ASCII 39)? Если они действительно были своего рода «умными кавычками», у них есть сопоставления в windows-1252, но для них нет сопоставления ISO-8859, поэтому, если ваша кодировка базы данных - ISO-8859-1, и вы пытаетесь вставить некоторые окна, 1252, Oracle пытается перевести с windows-1252 на ISO-8859-1 и использует chr (191) для сигнализации неустранимого символа. chr (191), оказывается, является вопросительным знаком открытия.

Вы можете проверить, что при выполнении этого (копировать выберите, чтобы сохранить интеллектуальные кавычки):

select dump('‘’“”') from dual 

Такое поведение является в основном «правильный», как то, что вы просите Oracle делать не может быть сделано, хотя это не очень интуитивно.

См. , ISO8859-1 и ISO-8859-15 кодировки для сравнения. Обратите внимание, что в окнах используется диапазон 127-159, который не используется в кодировках ISO.

Смежные вопросы