SQL: В чем разница между ... WHERE O.type = N'U '... и ... WHERE O.type =' U ' - PullRequest
1 голос
/ 31 августа 2010

Сегодня я столкнулся с оператором SQL, который содержит элемент, который я никогда не видел.Может быть, кто-то может уточнить?Этот SQL взят из хранимой процедуры в Sybase ASE 15

SELECT O.id, OWNER = U.name, O.name, O.type FROM xxx.dbo.sysobjects O LEFT JOIN JOINxxx.dbo.sysusers U ON O.uid = U.uid ГДЕ (O.type = N'U 'ИЛИ O.type = N'S' ИЛИ ​​O.type = N'V ') ЗАКАЗАТЬ ПО O.name

Выполняется

ВЫБРАТЬ O.id, OWNER = U.name, O.name, O.type FROM xxx.dbo.sysобъекты O LEFT JOIN xxxdbo.sysusers U ON O.uid = U.uid WHERE (O.type = 'U' ИЛИ ​​O.type = 'S' ИЛИ ​​O.type = 'V') ЗАКАЗАТЬ ПО O.name

дает тот же результат, что и SQL выше.

Что делает N перед параметром?

Ответы [ 3 ]

4 голосов
/ 31 августа 2010

N гарантирует, что указанное значение рассматривается как Unicode

1 голос
/ 31 августа 2010

N обозначает National - N преобразует VARCHAR в NVARCHAR, который используется для хранения данных в кодировке Unicode, который используется для хранения многоязычных данных в таблицах вашей базы данных.

1 голос
/ 31 августа 2010

Это «национализированная» (Unicode) строка.

...