Обойти необходимость добавлять префикс N в строковые литералы - PullRequest
2 голосов
/ 05 августа 2009

Мы унаследовали приложение, изначально не предназначенное для использования локализованных данных (локализованные строки, такие как русский / японский, локализованные форматы даты и времени и т. Д.).

Разработчики оригинала, которые работали над проектом, не ожидали, что будут строки Unicode. Хотя типы данных таблицы поддерживают символы Юникода (NVARCHAR и т. Д.), Некоторые из их запросов не имеют префикса N.

Например:

select * from table where searchString like '%<search string here>%'

Для работы со строками Unicode:

select * from table where searchString like N'%<search string here>%'

Затем мы решили, что нам просто нужно вручную поставить префикс всех строковых литералов на N, но затем, к нашему ужасу, мы обнаружили огромное количество запросов ВЕЗДЕ.

Итак, мой вопрос: есть ли способ НЕ добавлять префикс N в наши запросы, но он все равно будет работать? Как сказать SQL Server: «Эй, пожалуйста, рассматривайте все строки как Unicode. Пожалуйста, не заставляйте меня говорить вам каждый раз. :)»

С уважением, Ian

Ответы [ 2 ]

1 голос
/ 05 августа 2009

Вы не можете. Это необходимо для совместимости с драйверами ODBC / OLE (чтобы они не пытались выполнять преобразования кодовой страницы).

1 голос
/ 05 августа 2009

В SQL Server 2000 и 2005, насколько я знаю, нет. Не могу сказать о 2008 году, но подозреваю то же самое.

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