Выберите кириллический адрес в базе данных "Latin1_General_CI_AS" - PullRequest
0 голосов
/ 29 августа 2018

У меня в кириллице правильно хранятся адреса (с nvarchar) в базе данных slq-server.

При выборе строки, в которой находится кириллический адрес, оператор select возвращает строку правильно.

НО при попытке выбрать все строки с определенным адресом (например, в предложении where) выбор ничего не находит, поскольку он принимает термин для поиска кириллицы, преобразует его в соответствии с латинским сопоставлением в ?????' и выполняет поиск для ?????' в базе данных, которую он, конечно, не может найти.

Можно ли это исправить, например, через настройки сервера или базы данных, не требуя префикса "N" и не теряя все немецкие, французские, ... акценты?

И / или существует ли «общее сопоставление» для западноевропейских и кириллических символов или 16-разрядное сопоставление для UNICODE в целом?

1 Ответ

0 голосов
/ 29 августа 2018

Если вы хотите передать строку поиска в cyrillic, но без использования Unicode, вам следует запустить запрос в контексте «кириллической базы данных», т. Е. Если ваша БД (я называю ее LatinDB) имеет Latin1_General_CI_AS параметры сортировки: вы должны создать другую базу данных, скажем, CyrDB, которая имеет кириллицу, а затем запросить вашу базу данных из контекста CyrDB, например:

use CyrDB;

select *
from LatinDB.dbo.your_tbl
where address = 'какой-то там адрес' -- here I'm not using Unicode, no N character behind my string

Можно ли это исправить, например, через настройки сервера или базы данных, без требуя префикс "N" и не теряя весь немецкий, французский, ... акценты?

Если вы имеете в виду сохранение этих «акцентов» в наборе результатов, они будут сохранены, так как поле равно nvarchar.

Если вы имеете в виду, что хотите ввести запрос в том же контексте Cyrillic, вам следует уточнить, какие символы вы хотите потерять, если их коды ascii от 1 до 127, вы все равно можете использовать CyrDB для запуска вашего запрос, но если ваши символы выше 128, и вы не хотите передавать их как Unicode, вы должны использовать контекст другого БД с соответствующим сопоставлением

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...