Какой тип данных выбрать для хранения простого текста в Microsoft SQL Server 2008? - PullRequest
6 голосов
/ 21 июня 2010

Например, в моем C # есть строковое поле Name (Linq-to-SQL);каким типом данных должно быть это поле SQL?

varchar?NCHAR?Я в замешательстве.

Ответы [ 4 ]

10 голосов
/ 21 июня 2010

SQL Server 2005+ эквивалент

Лучший тип SQL, эквивалентный C # String, равен nvarchar(max). В нем хранится ровно столько же текста, сколько в экземпляре объекта C # String. Но будьте осторожны. Выбор других типов [n][var]char был бы более оптимальным для хранилища данных (то есть они могли бы работать намного быстрее), но выбор одного из них во многом зависит от данных, которые вы хотите сохранить.

  • char(n) для строк фиксированной длины (длины n), поэтому, если ваши строки не различаются по размеру, вы должны выбрать этот тип (то есть ключи продукта)
  • varchar(n) используется для переменной длины строки вплоть до длины n (то есть адреса электронной почты)
  • varchar(max) используется для переменной длины строки любой длины, не превышающей 2G символов, поэтому в основном совпадает с типом C # String (т. Е. Содержимым сообщения в блоге)
  • добавьте n к этим типам, и ваши данные будут храниться в двухбайтовых байтах (Unicode), чтобы ваши строки стали более универсальными в многоязычных приложениях

Pre SQL Server 2005

До версии SQL Server 2005 типы [n]varchar(max) не поддерживались. Вместо этого вы должны были использовать [n]text типы, но они хранились по-разному, поэтому были намного медленнее по сравнению с [n][var]char альтернативами и также были более громоздкими для разработчиков, чтобы обрабатывать и манипулировать ими.

1 голос
/ 21 июня 2010
  • Varchar является наиболее распространенным, но он используется только для текста ASCII.
  • NVarchar по умолчанию для хранения строк, потому что он работает с Unicode.
  • Исправлено Charдлина символаЭто довольно редко.Почти никто больше его не использует.
  • NChar - это кодировка unicode фиксированной длины.Я никогда не видел его используемым.
  • Text и NText - это неограниченное двоичное хранилище для огромных строк.Они не могут быть проиндексированы, поэтому вы можете их избежать.
1 голос
/ 21 июня 2010

Я всегда предпочитаю выбирать nvarchar: Различия между varchar и nvarchar в SQL Server

1 голос
/ 21 июня 2010

Это может быть любой из типов SQLServer, который хранит строковые данные. Так, NVarchar, Varchar, Char, NChar.

В общем, я предпочитаю делать что-нибудь, связанное с текстом, NVarchar, поскольку он на 100% уверен, что нужен только набор символов латинского алфавита, и в этом случае вы можете безопасно использовать Varchar.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...