Почему префиксная строка с N дает другой код [duplicate]

С ES5 + (любой просматриваемый в настоящее время - 2017) вы должны иметь возможность делать

[].forEach.call(document.getElementsByClassName('answer'), function(el) {
    el.style.color= 'red';
});

276
задан Peter Mortensen 5 April 2012 в 17:48
поделиться

4 ответа

Он объявляет строку как тип данных nvarchar, а не varchar

Возможно, вы видели код Transact-SQL, который передает строки с использованием префикса N. Это означает, что последующая строка находится в Юникоде (N фактически означает набор символов национального языка). Это означает, что вы передаете значение NCHAR, NVARCHAR или NTEXT, в отличие от CHAR, VARCHAR или TEXT.

Чтобы указать из Microsoft :

Префикс Unicode символьные строковые константы с буквой N. Без префикса N строка преобразуется в кодовую страницу по умолчанию базы данных. Эта кодовая страница по умолчанию может не распознавать определенные символы.


Если вы хотите узнать разницу между этими двумя типами данных, см. Это сообщение SO:

В чем разница между varchar и nvarchar?

326
ответ дан Community 22 August 2018 в 08:54
поделиться
  • 1
    @Curt, что означает, что я использую N только тогда, когда я использую следующие типы данных CHAR, VARCHAR or TEXT ?? потому что `NCHAR, NVARCHAR или NTEXT` по сути хранят UNICODE, я не требую, чтобы добавить его seperatly .... это правда? – Pritesh 4 August 2012 в 12:23
  • 2
    @Pritesh - Только если вы используете кодовую страницу по умолчанию, которая может не распознавать эти символы Юникода, как выделено жирным шрифтом выше. – Todd 1 September 2015 в 12:32
  • 3
    @Curt Соединение с databases aspfaq com перенаправляет на весьма сомнительна сайты (fkref com, za1 zeroredirect1 com, i0z13 trackvoluum com), которые были отмечены нашей корпоративной сети, как порнография, вредоносные сайты и спам-адресов. Я связался с владельцем aspfaq.com и отредактировал ответ, чтобы удалить ссылку. – jaume 26 November 2015 в 09:17

позвольте мне рассказать вам, какая неприятная вещь произошла с префиксом N ''. и я не мог исправить 2 дня.

Моя сортировка db - это SQL_Latin1_General_CP1_CI_AS.

есть таблица. столбец MyCol1 является Nvarchar

, но этот запрос не соответствует Exact Value That Exist.

SELECT TOP 1 * FROM myTable1 WHERE  MyCol1 = 'ESKİ'  

// 0 result

с использованием префикса N '' исправляет его

SELECT TOP 1 * FROM myTable1 WHERE  MyCol1 = N'ESKİ'  

// 1 result - found!!!!

, почему ? потому что у latin1_general нет большого точечного İ, поэтому он не подходит.

8
ответ дан blackholeearth0_gmail 22 August 2018 в 08:54
поделиться

Предполагая, что значение имеет тип nvarchar, только мы используем N ''

4
ответ дан RickyRam 22 August 2018 в 08:54
поделиться
0
ответ дан variable 5 November 2018 в 06:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: