Рассмотрим столбец в базе данных MS SQL, который будет содержать либо потенциально большие фрагменты, либо данные XML или данные HL7v2 с разделителями по конвейеру.

В настоящее время (из-за отсутствия дальновидности) он в настоящее время типизирован как XML, потому что изначально мы принимали только данные XML. Хотя технически это может работать, это означает, что все специальные символы XML в сообщениях HL7v2 кодируются (& --> & и т. Д.).

Это не идеально для того, что мы делаем. Если бы мне пришлось преобразовать этот столбец в другой тип данных, что бы я рекомендовал? Я думал, что nvarchar(max), похоже, справится с этим, но я плохо разбираюсь в типах данных SQL и последствиях использования разных типов для таких данных.

1
Bensonius 19 Фев 2016 в 21:29

3 ответа

Лучший ответ

На самом деле нет другого выбора, кроме nvarchar(max).

Другие варианты: varchar(max) или varbinary(max). Возможно, вам понадобится Unicode, поэтому вы не можете использовать varchar. Было бы неплохо сохранить его как varbinary, но работать с ним было бы просто неприятно.

3
David 19 Фев 2016 в 18:35

Используйте HAPI для преобразования сообщений HL7 из ER7 (с разделителями) в Кодировка XML. Таким образом, вы можете использовать один XML-столбец SQL Server для всего. И это даст вам дополнительное преимущество в виде возможности запрашивать содержимое сообщения HL7 с помощью XQuery.

1
Nick Radov 20 Фев 2016 в 20:10

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

-1
Marti Pàmies Solà 22 Фев 2016 в 07:14