SQL: обновить данные Unicode в столбце до символов с ударением - PullRequest
0 голосов
/ 11 января 2019

У меня есть столбец, для которого было установлено значение Varchar, а для базы данных - SQL_Latin1_General_CP1_CI_AS.

Когда пользователь вводил свое имя в наш веб-интерфейс и сохранял данные, он неправильно сохранял символы с акцентом.

Веб-пользователь вводил следующее «Béala», но оно сохранялось в базе данных как «Bélala».

Я полагаю, что изменение столбца с Varchar на NVarchar должно помешать этому произойти (?), Однако у меня есть два вопроса.

1) Как выполнить выборку существующих данных в столбце и правильно их отобразить?

select CONVERT(NVARCHAR(100),strAddress1) from [dbo].[tblCustomer]

Это все еще показывает данные неправильно.

2) Как обновить данные в столбце, преобразованном в NVarchar, для правильного сохранения акцентированных символов?

Большое спасибо, Ray.

Ответы [ 2 ]

0 голосов
/ 11 января 2019

Единственная идея, которая пришла мне в голову, это то, что вам нужно подготовить обновление, которое обманет эти плохо загруженные данные, то есть знак 'Ã ©' всегда будет соответствовать ровно одному символу (в данном случае 'é'), вы должны поймать все специальные символы как были изменены (просто простое обновление с делами и замена). Конечно, первый столбец должен быть типа nvarchar. Это решает проблемы 1 и 2 (данные будут правильными в таблице, данные будут отображаться правильно, я описал обновление выше)

0 голосов
/ 11 января 2019

Вот способ получить его по схеме нормальных символов.

select 'Réunion', cast('Réunion' as varchar(100)) COLLATE SQL_Latin1_General_CP1253_CI_AI

Кроме того, чтобы проверить все возможные параметры сортировки в SQL Server, вы можете попробовать этот запрос


SELECT name, description
  FROM sys.fn_helpcollations();
...