Лучший отвечающий
Почему SELECT COUNT не видит строки на кириллице?

Вопрос
-
Может кто подскажет.
Нужно подсчитать количество строк в таблице.
SELECT COUNT(*) не считает строки на кириллице. Он их не видит. Пишешь английскими буквами их считает.
Как то можно сделать, что бы COUNT подсчитывал строки написанные на кириллице?
27 апреля 2015 г. 14:32
Ответы
-
Это поле Kategoriya какого типа: varchar, nvarchar, что-то ещё?
Кодовая страница базы данных по умолчанию чему равна?
Вероятно, поможет N'Работа'.
- Изменено Petalvik 27 апреля 2015 г. 15:32
- Предложено в качестве ответа YatajgaModerator 27 апреля 2015 г. 16:33
- Помечено в качестве ответа Континент 27 апреля 2015 г. 16:35
27 апреля 2015 г. 15:31 -
N - national language character set. Проще говоря - юникод. Позволяет использовать символы любого алфавита.
В некоторых случаях можно обходиться без юникода. Для этого нужно установить соответствующую кодовую страницу.
- Помечено в качестве ответа Континент 27 апреля 2015 г. 16:35
27 апреля 2015 г. 16:32
Все ответы
-
Язык программирования и движок баз данных какие?27 апреля 2015 г. 14:37
-
ASP.net Razor
База MS SQL
Если так, считает:
var BaseRabota = db.Query("SELECT COUNT(*) AS Rabota FROM Table WHERE Kategoriya='Rabota'");
А, так нет:var BaseRabota = db.Query("SELECT COUNT(*) AS Rabota FROM Table WHERE Kategoriya='Работа'");
27 апреля 2015 г. 14:46 -
Это поле Kategoriya какого типа: varchar, nvarchar, что-то ещё?
Кодовая страница базы данных по умолчанию чему равна?
Вероятно, поможет N'Работа'.
- Изменено Petalvik 27 апреля 2015 г. 15:32
- Предложено в качестве ответа YatajgaModerator 27 апреля 2015 г. 16:33
- Помечено в качестве ответа Континент 27 апреля 2015 г. 16:35
27 апреля 2015 г. 15:31 -
nvarchar
Вписал N, заработало.
Что N означает? Буква n перед varchar?
27 апреля 2015 г. 15:58 -
N - national language character set. Проще говоря - юникод. Позволяет использовать символы любого алфавита.
В некоторых случаях можно обходиться без юникода. Для этого нужно установить соответствующую кодовую страницу.
- Помечено в качестве ответа Континент 27 апреля 2015 г. 16:35
27 апреля 2015 г. 16:32 -
Спасибо.27 апреля 2015 г. 16:35
-
Префикс n означает что строка в Юникде. N' oзначает что это строковая константа в Юникоде.
https://support.microsoft.com/en-us/kb/239530?wa=wsignin1.0
Строки всегда должны быть на Юникоде.
Хотя конечно использовать строковые константы в запросах не рекомендуется.
Вместо этого должен быть параметер значение которого устанавливается в нужную строки. Это особенно важно если строки получены от пользователя. В этом случае имеется опасность атак класса SQL Injection.
This posting is provided "AS IS" with no warranties, and confers no rights.
27 апреля 2015 г. 16:39Модератор -
27 апреля 2015 г. 19:21
-
База была MS SQL 2008 поэтому и была проблема с кириллицей.
В MS SQL 2012 такой проблемы нет.
11 мая 2015 г. 17:56 -
База была MS SQL 2008 поэтому и была проблема с кириллицей.
В MS SQL 2012 такой проблемы нет.
Насколько я знаю, в этих версих нет разницы в поддержке collation.
Предполагаю, что в 2012 у вас стоят другие параметры сопоставления.
Ознакомьтесь: Поддержка параметров сортировки и Юникода
11 мая 2015 г. 20:35