locked
Почему SELECT COUNT не видит строки на кириллице? RRS feed

  • Вопрос

  • Может кто подскажет.

    Нужно подсчитать количество строк в таблице.

    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
    Модератор
  • База была MS SQL 2008 поэтому и была проблема с кириллицей.

    В MS SQL 2012 такой проблемы нет.

    11 мая 2015 г. 17:56
  • База была MS SQL 2008 поэтому и была проблема с кириллицей.

    В MS SQL 2012 такой проблемы нет.

    Насколько я знаю, в этих версих нет разницы в поддержке collation.

    Предполагаю, что в 2012 у вас стоят другие параметры сопоставления.

    Ознакомьтесь: Поддержка параметров сортировки и Юникода

    11 мая 2015 г. 20:35