2013-12-11 5 views
1

Следующие запрос возвращает желаемый результат, как «Джон 朱亚丽»:Выбор китайских символов в сервере SQL 2008

DECLARE @FIRST_NAME nvarchar(30),@LAST_NAME nvarchar(30) 
SET @FIRST_NAME=N'John' 
SET @LAST_NAME =N'朱亚丽' 
SELECT @FIRST_NAME + ' ' + @LAST_NAME 

Однако, когда я изменить это на ниже (ив удаленной от N до кавычек), я получить результат как John ???:

DECLARE @FIRST_NAME nvarchar(30),@LAST_NAME nvarchar(30) 
SET @FIRST_NAME='John' 
SET @LAST_NAME ='朱亚丽' 
SELECT @FIRST_NAME + ' ' + @LAST_NAME 

Теперь я знаю о персонажах Юникода и почему нам нужно N «». Но я сталкиваюсь с проблемой, когда я выбираю некоторые китайские символы из колонки базы данных. Столбцы определяются как NVARCHAR и хранят иероглифы, но когда я запускаю простой выбор в таблице, символы отображаются как вопросительные знаки.

Как решить проблему? Есть ли какая-либо функция или символ, которые я добавляю перед столбцом (или переменными в приведенном выше примере)?

Версия SQL SERVER - 2008 R2.

+0

Вы можете показать «просто выбрать» вы используете, где символы отображаются в виде вопросительных знаков в выходном сигнале, и какой инструмент вы используете, чтобы потреблять/вывода изображения? –

ответ

4

Вероятно, данные были потеряны, когда она была вставлена ​​(потому что не имеют префикс N тогда). Например:

DECLARE @x TABLE(ID INT IDENTITY(1,1), n NVARCHAR(32)); 

INSERT @x SELECT N'朱亚丽'; 
INSERT @x SELECT '朱亚丽'; 

SELECT ID, n FROM @x; 

Результаты:

1 朱亚丽 
2 ??? 

На основании вашего описания, я серьезно сомневаюсь, что это происходит на SELECT.

И если это так, для этого нет никаких исправлений: любые данные, которые вы хотели вставить в таблицу, давно прошли без каких-либо шансов на восстановление (если только это не было из файла или другого источника, Импортировать).

+0

Да у меня есть SQL «обновление», который работает со многими языками, но не китайский, ни японский. Они просто обновились как ????. Добавление N 'к литералу, например. N '允許 直' установил его – user1444886

Смежные вопросы