Тип текста SQL Server по сравнению с [закрытым] типом данных varchar

Вам не нужно nest. Аргумент metric из функции get_sample_size должен быть числовым вектором, но если вы сделаете nest, столбец data будет списком фрейма данных, который не может быть вводом для аргумента metric. [1110 ]

Я думаю, что вы можете использовать summarize и map, чтобы применить свою функцию к столбцу metric.

library(tidyverse)

data %>% 
  group_by(name) %>% 
  summarize(result = purrr::map(.x = metric, 
                                .f = get_sample_size,  
                                threshold = 0.01))
# # A tibble: 3 x 2
#   name  result              
#   <fct> <list>              
# 1 A     <data.frame [1 x 1]>
# 2 B     <data.frame [1 x 1]>
# 3 C     <data.frame [1 x 1]>
283
задан Brian Webster 13 September 2012 в 09:44
поделиться

4 ответа

При использовании SQL Server 2005 или позже используйте varchar(MAX). text тип данных удерживается от использования и не должен использоваться для работы новой разработки. От документы :

Важный

ntext , text , и image типы данных будут удалены в будущей версии Microsoft SQL Server. Избегайте использования этих типов данных в работе новой разработки и запланируйте изменить приложения, которые в настоящее время используют их. Используйте nvarchar (макс.) , varchar (макс.) , и varbinary (макс.) вместо этого.

206
ответ дан Mark Amery 23 November 2019 в 01:54
поделиться

TEXT используется для больших частей строковых данных. Если длина поля превышает определенный порог, текст хранится из строки.

VARCHAR всегда хранится последовательно и имеет предел [1 146] 8000 символы. При попытке создать VARCHAR(x), где x> 8000 , Вы получаете ошибку:

Сервер: сообщение 131, Уровень 15, состояние 3, Строка 1

размер () данный типу ‘varchar’ превышает максимум, допускал любой тип данных (8000)

, Эти ограничения длины не делают проблемы VARCHAR(MAX) в [1 148] SQL Server 2005 , который может быть сохранен из строки, точно так же, как TEXT.

Примечание, которое MAX не является своего рода константой здесь, VARCHAR и VARCHAR(MAX), является совсем другими типами, последнее существо очень близко к TEXT.

В предыдущих версиях [1 149] SQL Server Вы не могли получить доступ TEXT непосредственно, Вы только могли получить TEXTPTR и использовать его в [1 111] и WRITETEXT функции.

В [1 150] SQL Server 2005 можно непосредственно получить доступ TEXT столбцы (хотя Вам все еще нужен явный бросок к [1 114] для присвоения значения для них).

TEXT хорошо:

  • , Если необходимо сохранить крупные тексты в базе данных
  • , Если Вы не ищете на значении столбца
  • , Если Вы редко выбираете этот столбец и не присоединяетесь на нем.

VARCHAR хорошо:

  • , Если Вы храните небольшие строки
  • , Если Вы ищете на строковом значении
  • , Если Вы всегда выбираете его или используете его в соединениях.

[1 151] выбор здесь я означаю выпускать любые запросы, которые возвращают значение столбца.

[1 152] поиск здесь я означаю выпускать любые запросы, результат которых зависит от значения TEXT или VARCHAR столбец. Это включает использование его в любой JOIN или WHERE условие.

Как эти TEXT хранится из строки, запросы, не включающие TEXT, столбец обычно быстрее.

Некоторые примеры того, для чего TEXT хорошо:

  • комментарии Блога
  • страницы Wiki
  • источник Кода

Некоторые примеры того, для чего VARCHAR хорошо:

  • Имена пользователей
  • названия страницы
  • Имена файлов

Как показывает опыт, если Вам когда-либо нужны Вы текстовое значение для превышения 200 , символы И не используют соединение на этом столбце, используют TEXT.

Иначе использование VARCHAR.

P.S. то же относится UNICODE, включил NTEXT и NVARCHAR также, который необходимо использовать для примеров выше.

P.P.S. то же относится VARCHAR(MAX) и NVARCHAR(MAX) что SQL Server 2005 + использование вместо [1 132] и NTEXT. Необходимо будет включить large value types out of row для них с [1 135], если Вы захотите, чтобы они были всегда сохранены из строки.

, Как упомянуто выше и здесь , TEXT будет устаревшим в будущих выпусках:

text in row опция будет удалена в будущей версии [1 157] SQL Server. Избегайте использования этой опции в работе новой разработки и запланируйте изменить приложения, которые это в настоящее время использует text in row. Мы рекомендуем хранить большие данные при помощи varchar(max), nvarchar(max), или varbinary(max) типы данных. Для управления последовательно и поведение из строки этих типов данных используйте large value types out of row опция.

278
ответ дан 8 revs, 2 users 86% 23 November 2019 в 01:54
поделиться

В SQL-сервере 2005 были представлены новые типы данных: varchar(max) и nvarchar(max) у Них есть преимущества старого типа текста: они могут содержать op к 2 ГБ данных, но у них также есть большинство преимуществ varchar и nvarchar. Среди этих преимуществ способность использовать функции обработки строк, такие как подстрока ().

кроме того, varchar (макс.) хранится в таблице (диск/память) пространство, в то время как размер ниже 8 КБ. Только то, когда Вы помещаете больше данных в поле, это, хранится из пространства таблицы. Данные, хранившие в пространстве таблицы, (обычно) получаются более быстрые.

Короче говоря, никогда не используйте текст, поскольку существует лучшая альтернатива: (n) varchar (макс.). И только используйте varchar (макс.), когда регулярный varchar не является достаточно большим, т.е. если Вы будете ожидать строку, которую Вы собираетесь сохранить, то превысит 8 000 символов.

, Как был отмечен, можно использовать ПОДСТРОКУ на Типе данных text, но только поскольку долго Текстовые поля содержат меньше чем 8 000 символов.

40
ответ дан edosoft 23 November 2019 в 01:54
поделиться

В ms 2008 произошли некоторые существенные изменения -> Возможно, стоит рассмотреть следующую статью при принятии решения о том, какой тип данных использовать. http://msdn.microsoft.com/en-us/library/ms143432.aspx

Байт на

  1. varchar (max), varbinary (max), xml, text или image столбец 2 ^ 31 -1 2 ^ 31-1
  2. столбец nvarchar (max) 2 ^ 30-1 2 ^ 30-1
7
ответ дан 23 November 2019 в 01:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: