Типы данных для больших объектов в SQL Server 2008. Varbinary тип данных
Лучшие 'varbinary' Вопросы - Qaru
varbinary - это тип данных SQL Server, используемый для хранения двоичных данных переменной длины
Я хочу сделать преобразование в T-SQL из типа varbinary в тип строки Вот пример: Сначала я получил это varbinary 0x21232F297A57A5A743894A0E4A801FC3 И затем я хочу преобразовать его в 21232f297a57a5a743894a0e4a801fc3 Как это сделать?
задан 27 авг. '12 в 12:08
У меня есть некоторые varbinary данные, хранящиеся в таблице в MS Sql Server 2005. У кого-нибудь есть код SQL, который принимает запрос как ввод (скажем, запрос гарантирует, что возвращается один столбец varbinary) и выводит байты на диск (по одному ...
задан 30 окт. '10 в 0:30
Я читал в Интернете эти утверждения о типах SQL Server: VARBINARY(MAX) - Двоичные строки с переменной длиной может сохраняться до 2 ^ 31-1 байт. IMAGE - Двоичные строки с переменная длина до 2 ^ 31-1 (2 147 483 647) байтов. Существует ли дейст...
задан 06 нояб. '10 в 16:34
Можно ли вставить файл в столбце varbinary (max) в Transact-SQL? Если да, я был бы очень рад получить фрагмент кода, чтобы хотя бы дать мне представление, как это сделать. Спасибо
задан 31 июля '09 в 16:19
Некоторое время назад я задал вопрос о сортировке номера иерархии/версии в SQL Server. ( Как я могу сортировать колонку "Номер версии" в общем случае с помощью запроса SQL Server). Среди ответов, которые были представлены, была эта ссылка на вызов...
задан 12 мая '11 в 16:10
Как я могу свободно говорить nhibernate для создания поля varbinary в таблице sql server 2005, в которой используется размер поля varbinary (max)? На данный момент я всегда получаю дефолт varbinary (8000), который недостаточно велик, поскольку я соби...
задан 08 июля '09 в 16:59
У меня есть таблица, в которой поле userpassword имеет тип данных varbinary. Поэтому я смущен тем, что в какой форме я должен сохранять данные в поле userpassword, потому что когда я сохраняю данные varchar, это дало мне ошибку.
задан 18 июля '10 в 15:46
Каков наиболее эффективный способ чтения только части двоичных данных из поля varbinary (MAX) (не используя FileStreams) в SQL Server 2008? При записи данных в столбец функция VarBinary.Write() доступна в T-SQL, позволяя байтам записываться в поле п...
задан 17 авг. '09 в 19:09
Я пытаюсь использовать данные изображения, хранящиеся в поле VARBINARY (MAX) в базе данных, используя ASP.Net. Прямо сейчас код заполняет таблицу данных, а затем вытаскивает массив байтов из DataRow и подталкивает массив байтов в ответ. Мне интересно...
задан 18 февр. '11 в 17:38
Есть ли способ загрузить файл в varbinary с помощью SQL Management Studio без указания ручного SQL-запроса?
задан 16 июня '10 в 16:19
В прошлом я заметил ужасную производительность при запросе столбца varbinary (max). Понятно, но, похоже, это также происходит при проверке, является ли оно нулевым или нет, и я надеялся, что движок вместо этого сделает несколько ярлыков. select top ...
задан 23 сент. '10 в 7:24
У меня есть длинная хранимая процедура, и когда я выполняю процедуру, я получаю следующую ошибку: Msg 206, Level 16, State 2, Line 1 Operand type clash: varchar(max) is incompatible with sql_variant Итак, чтобы справиться с проблемой съемки, я печ...
задан 01 нояб. '11 в 19:21
В основном я пытаюсь дать пользователю определенный пароль, чтобы я мог проверить некоторые функции в системе, так как у меня только есть учетная запись администратора, и я не могу играть с этим, я просто выбираю случайную учетную запись, чтобы я мог...
задан 19 дек. '11 в 23:36
Я пытаюсь использовать CONTEXT_INFO для передачи пользовательского кода из хранимой процедуры в триггер DELETE для целей аудита таблицы. Все работает отлично, однако я заметил, что длина пользовательского кода, сохраненного в таблице аудита, неверн...
задан 24 февр. '12 в 19:47
Мне нужно создать SQL-вставку script для копирования данных с одного SQL-сервера на другой. Таким образом, с .net, я читаю данные данной таблицы SQL Server и записываю их в новый текстовый файл, который затем может быть выполнен, чтобы вставить эти д...
задан 28 янв. '11 в 12:20
qaru.site
Сопоставления типов данных SQL Server
- 03/30/2017
- Время чтения: 3 мин
- Соавторы
В этой статье
В SQL Server и .NET Framework используются различные системы типов.SQL Server and the .NET Framework are based on different type systems. Например, максимальная разрядность структуры .NET Framework Decimal составляет 28, в то время как максимальная разрядность десятичных и числовых типов данных SQL Server - 38.For example, the .NET Framework Decimal structure has a maximum scale of 28, whereas the SQL Server decimal and numeric data types have a maximum scale of 38. Чтобы обеспечить целостность данных при чтении и записи, объект SqlDataReader предоставляет характерные для SQL Server типизированные методы доступа, возвращающие объекты System.Data.SqlTypes, а также методы доступа, возвращающие типы .NET Framework.To maintain data integrity when reading and writing data, the SqlDataReader exposes SQL Server–specific typed accessor methods that return objects of System.Data.SqlTypes as well as accessor methods that return .NET Framework types. Типы данных SQL Server и .NET Framework также представлены перечислениями в классах DbType и SqlDbType, которые можно использовать при указании типов данных SqlParameter.Both SQL Server types and .NET Framework types are also represented by enumerations in the DbType and SqlDbType classes, which you can use when specifying SqlParameter data types.
В приведенной ниже таблице показан выводимый тип .NET Framework.NET Framework, перечисления DbType и SqlDbType, а также методы доступа для класса SqlDataReader.The following table shows the inferred .NET Framework.NET Framework type, the DbType and SqlDbType enumerations, and the accessor methods for the SqlDataReader.
1 нельзя задать DbType свойство SqlParameter для SqlDbType.Date.1 You cannot set the DbType property of a SqlParameter to SqlDbType.Date.2 используйте конкретный типизированный метод доступа, если известен базовый тип sql_variant.2 Use a specific typed accessor if you know the underlying type of the sql_variant.
Документация по SQL ServerSQL Server documentation
Дополнительные сведения о типах данных SQL Server см. в разделе типы данных (Transact-SQL).For more information about SQL Server data types, see Data types (Transact-SQL).
См. такжеSee Also
Типы данных SQL Server и ADO.NETSQL Server Data Types and ADO.NETДвоичные данные и данные большого объема SQL ServerSQL Server Binary and Large-Value DataСопоставления типов данных в ADO.NETData Type Mappings in ADO.NETНастройка параметров и типы данных параметровConfiguring Parameters and Parameter Data TypesЦентр разработчиков наборов данных и управляемых поставщиков ADO.NETADO.NET Managed Providers and DataSet Developer Center
docs.microsoft.com
Типы данных для больших объектов в SQL Server 2008 | Windows IT Pro/RE
. Как правило, эти изображения используются для демонстрации внешнего вида продуктов или другой графической информации на сайтах, и при этом они могут быть очень большими.
В SQL Server имеется много типов данных, которые могут применяться для различных типов LOB-хранилищ, но выбор правильного типа для LOB-хранилища может оказаться очень сложным, если вы вообще захотите хранить большие объекты в самой базе данных. Многие администраторы баз данных предпочитают хранить большие объекты вне баз данных. Основное правило такое: наилучшая производительность при работе с LOB-объектами размером менее 256 Кбайт достигается при их хранении в базе данных, с объектами размером более 1 Мбайт — вне БД.
Хранение LOB-объектов вне базы данных дает выигрыш в производительности, но также создает риски, так как отсутствует встроенный механизм обеспечения целостности данных. Чтобы помочь найти оптимальный способ хранения LOB-данных, необходимо понять различия между типами данных LOB в SQL Server.
1. TEXT. Данный тип используется для текстовых данных переменной длины без поддержки Unicode, такой тип не может служить для хранения двоичных данных. Тип данных TEXT поддерживает данные размером до 2 Гбайт (2^31–1,2147483647). Тип TEXT использовать не рекомендуется, но он еще присутствует в SQL Server 2008 R2.
2. NTEXT. Используется для текстовых данных переменной длины с поддержкой Unicode; как и TEXT, этот тип не поддерживает двоичные данные. Тип NTEXT поддерживает данные размером до 1 Гбайт (2^30–1,1073741823). Тип NTEXT использовать не рекомендуется, но он еще присутствует в SQL Server 2008 R2.
3. IMAGE. Используется для двоичных данных переменной длины; тип данных IMAGE — традиционный тип LOB-хранилищ для SQL Server, в котором можно хранить как текстовые, так и двоичные данные. Тип IMAGE поддерживает данные размером до 2 Гбайт (2^31–1,2147483647). Этот тип данных использовать не рекомендуется, но он еще присутствует в SQL Server 2008 R2.
4. VARCHAR (MAX). Используется для текстовых данных переменной длины без поддержки Unicode. Тип VARCHAR (MAX) поддерживает данные размером до 2 Гбайт (2^31–1,2147483647). Этот тип данных появился в SQL Server 2005 и является рекомендуемым к использованию.
5. NVARCHAR (MAX). Используется для текстовых данных переменной длины с поддержкой Unicode; тип NVARCHAR (MAX) поддерживает данные размером до 1 Гбайт (2^30–1,1073741823). Этот тип данных появился в SQL Server 2005 и является рекомендуемым к использованию.
6. FILESTREAM. Тип данных FILESTREAM сочетает производительность доступа к LOB-объектам напрямую через файловую систему NTFS с целостностью и прямым доступом через механизм реляционных баз данных SQL Server. Он может использоваться как для двоичных, так и для текстовых данных и поддерживает файлы величиной вплоть до размера дискового тома. Использование типа FILESTREAM разрешается путем комбинирования настроек SQL Server и соответствующей базы данных и типа данных VARBINARY (MAX). Тип данных FILESTREAM появился в SQL Server 2008 и является рекомендуемым к использованию. Дополнительную информацию об этом типе данных можно найти в статье «Using SQL Server 2008’s FILESTREAM Data Type» по адресу http://www.sqlmag.com/article/tsql3/using-sql-server-2008-s-filestream-data-type.aspx).
7. XML. Используется для хранения данных в формате XML. Тип XML также можно использовать как тип для хранения больших объемов данных. Он поддерживает данные размером до 2 Гбайт (2^31–1,2147483647). Тип данных XML появился в SQL Server 2005 и является рекомендуемым к использованию.
8. VARBINARY. Тип данных VARBINARY, строго говоря, не является типом для хранения больших объектов, так как его размер ограничен 8000 байт. Его можно задействовать для хранения небольших объемов двоичных данных.
Майкл Оти ([email protected]) — технический директор Windows IT Pro и SQL Server Magazine, автор Microsoft SQL Server 2008 New Features (Osborne/McGraw-Hill)
www.osp.ru
Типы данных (Transact-SQL) | Microsoft Docs
- 03/07/2014
- Время чтения: 2 мин
В этой статье
В SQL Server у каждого столбца, локальной переменной, выражения и параметра есть определенный тип данных. Тип данных — атрибут, определяющий, какого рода данные могут храниться в объекте: целые числа, символы, данные денежного типа, метки времени и даты, двоичные строки и так далее.
SQL Server предоставляет набор системных типов данных, определяющих все типы данных, которые могут использоваться в нем. Можно также определять собственные типы данных в Transact-SQL или Microsoft.NET Framework. Псевдонимы типов данных основываются на системных типах. Дополнительные сведения о псевдонимах типов данных см. в разделе CREATE TYPE (Transact-SQL). Определяемые пользователем типы данных обладают свойствами, зависящими от методов и операторов класса, который создается для них на одном из языков программирования, которые поддерживаются .NET Framework.
При объединении одним оператором двух выражений с разными типами данных, параметрами сортировки, точностями, масштабами или длинами, результат определяется следующим образом.
Тип данных результата определяется применением правил очередности типов данных к входным выражениям. Дополнительные сведения см. в разделе Приоритет типов данных (Transact-SQL);
Параметры сортировки результата определяются правилами очередности параметров сортировки, если тип данных результата относится к char, varchar, text, nchar, nvarchar или ntext. Дополнительные сведения см. в разделе Очередность параметров сортировки (Transact-SQL);
Точность, масштаб и длина результата зависят от точности, масштаба и длины входных выражений. Дополнительные сведения см. в разделе Точность, масштаб и длина (Transact-SQL).
SQL Server предоставляет синонимы типов данных для совместимости со стандартом ISO. Дополнительные сведения см. в разделе Синонимы типов данных (Transact-SQL).
Категории типов данных
Типы данных в SQL Server объединены в следующие категории.
Точные числа | Символьные строки в Юникоде |
Приблизительные числа | Двоичные данные |
Дата и время | Прочие типы данных |
Символьные строки |
|
В зависимости от параметров хранения, некоторые типы данных в SQL Server относятся к следующим группам:
типы данных больших значений: varchar(max), nvarchar(max) и varbinary(max).
Типы данных больших объектов: text, ntext, image, varchar(max), nvarchar(max), varbinary(max) и xml
Примечание
Хранимая процедура sp_help возвращает -1 в качестве значения длины для типов данных большого объема и xml.
Точные числа
Приблизительные числа
Дата и время
Символьные строки
Символьные строки в Юникоде
Двоичные данные
Прочие типы данных
См. также
Справочник
CREATE PROCEDURE (Transact-SQL)
CREATE TABLE (SQL Server)
DECLARE @local\_variable (Transact-SQL)
EXECUTE (Transact-SQL)
Выражения (Transact-SQL)
Встроенные функции (Transact-SQL)
LIKE (Transact-SQL)
sp_droptype (Transact-SQL)
sp_help (Transact-SQL)
sp_rename (Transact-SQL)
msdn.microsoft.com
2.3.6 Тип денежных данных.
В Microsoft SQL Server 2005 денежные данные, или значения валюты, хранятся с использованием двух типов данных: money и smallmoney. Для этих типов данных может использоваться любой из приведённых в таблице 1 символов валют.
Валютные или денежные данные не требуется заключать в одинарные кавычки ( ' ). Важно помнить, что, несмотря на возможность указания денежных значений, которым предшествует символ валюты, SQL Server не сохраняет какие-либо сведения о валюте, связанные с символом, а хранит только числовое значение. Например, чтобы присвоить переменной значение 100 долларов, можно сделать следующее:
DECLARE @dollars AS money
SET @dollars = $100
SELECT @dollars
В этом случае будет возвращено значение 100,0000 без символа валюты.
Объект, определенный как money, может содержать не более 19 цифр, 4 из которых могут располагаться справа от десятичной запятой. Для хранения данных в объекте используется 8 байт. Таким образом, тип данных money имеет точность 19, масштаб 4 и длину 8.
Поскльку типы данных money и smallmoney ограничены четырьмя знаками после запятой, то если требуется указать больше знаков после символов, используйте тип данных decimal.
Чтобы отделить дробные денежные единицы, например центы, от целых денежных единиц, используйте запятую. Например, 2,15 соответствует 2 долларам и 15 центам.
В константах типа money и smallmoney не допускаются запятые в качестве разделителей, хотя отображаемый формат этих типов данных содержит запятые-разделители. Запятые-разделители можно указывать только в символьных строках, явно приведенных к типу money или smallmoney.
2.3.7 Типы binary и varbinary.
binary [ ( n ) ] - двоичные данные фиксированной длины размером в n байт, где n — значение от 1 до 8000. Размер хранения составляет n байт.
varbinary [ ( n | max) ] - двоичные данные переменной длины. n могут иметь значение от 1 до 8000; max означает максимальную длину хранения, которая составляет 2^31-1 (2 147 483 647) байт. Размер хранения - это фактическая длина введенных данных плюс 2 байта. Введенные данные могут иметь размер 0 символов. В ANSI SQL синонимом для varbinary является binary varying.
Типы данных binary и varbinary хранят последовательности битов. Хотя символьные данные обрабатываются на основе кодовой страницы Microsoft SQL Server, типы binary и varbinary представляют собой просто битовые потоки.
Двоичные константы начинаются с 0х (ноль и символ "x"), затем следует шестнадцатеричное представление набора битов. Например, 0х2А задает шестнадцатеричное число 2А, равное 42 в десятичном и 00101010 в двоичном формате.
Для хранения таких шестнадцатеричных значений, как идентификационный номер безопасности и идентификатор GUID (тип данных uniqueidentifier), следует использовать двоичные данные или комплексные числа, которые можно записать в шестнадцатеричном формате.
2.3.8 Типы данных больших значений.
В Microsoft SQL Server 2005 имеется признак max. Этот признак расширяет возможности хранения типов данных varchar, nvarchar и varbinary. varchar(max), nvarchar(max) и varbinary(max) вместе называются типами данных больших значений. Можно использовать типы данных больших значений для хранения 2^31-1 байт данных.
Используйте типы данных varchar(max), nvarchar(max) и varbinary(max) вместо типов данных text, ntext и image.
studfiles.net
Типы данных Microsoft SQL Server
Полный список всех типов данных в Microsoft SQL Server
Заголовки:
Источники
Приоритет типов данных (Transact-SQL)
Если оператор связывает два выражения различных типов данных, то по правилам приоритета типов данных определяется, какой тип данных имеет меньший приоритет и будет преобразован в тип данных с большим приоритетом. Если неявное преобразование не поддерживается, возвращается ошибка. Если оба операнда выражения имеют одинаковый тип данных, результат операции будет иметь тот же тип данных.
В SQL Server используется следующий приоритет типов данных:
- sql_variant
- xml
- datetimeoffset
- datetime2
- datetime
- smalldatetime
- date
- time
- float
- real
- decimal
- money
- smallmoney
- bigint
- int
- smallint
- tinyint
- bit
- ntext
- text
- image
- timestamp
- uniqueidentifier
- nvarchar (including nvarchar(max) )
- nchar
- varchar (including varchar(max) )
- char
- varbinary (including varbinary(max) )
- binary (lowest)
Синонимы типов данных (Transact-SQL)
Синонимы типов данных включены в SQL Server ради совместимости со спецификацией ISO. Эти синонимы и соответствующие им системные типы данных SQL Server приведены в следующей таблице.
Binary varying | varbinary |
char varying | varchar |
character | char |
character | char(1) |
character(n) | char(n) |
character varying(n) | varchar(n) |
Dec | decimal |
Double precision | float |
float[(n)] for n = 1-7 | real |
float[(n)] for n = 8-15 | float |
integer | int |
national character(n) | nchar(n) |
national char(n) | nchar(n) |
national character varying(n) | nvarchar(n) |
national char varying(n) | nvarchar(n) |
national text | ntext |
timestamp | rowversion |
Синонимы типов данных можно использовать вместо соответствующих базовых типов данных в инструкциях языка определения данных (data definition language, DDL), таких как CREATE TABLE, CREATE PROCEDURE или DECLARE @variable. Однако после создания объекта синонимы утрачивают силу. При создании объекта ему назначается базовый тип данных, связанный с синонимом. Никаких признаков того, что в инструкции, создавшей объект, был указан синоним, не остается.
Всем объектам, производным от первоначального объекта, таким, как столбцы результирующего набора или выражения, назначается базовый тип данных. Все последующие вызовы функций работы с метаданными, выполняемые для первоначального объекта и любых производных от него объектов, сообщают базовый тип данных, а не синоним. Это имеет место при работе с метаданными, например в процедуре sp_help и других системных хранимых процедурах, представлениях информационных схем и различных API-операции над метаданными, сообщающих типы данных столбцов таблицы или результирующего набора.
Точность, масштаб и длина (Transact-SQL)
Точность представляет собой количество цифр в числе. Масштаб представляет собой количество цифр справа от десятичной запятой в числе. Например: число 123,45 имеет точность 5 и масштаб 2.
В среде SQL Server максимальная точность типов данных numeric и decimal по умолчанию составляет 38 разрядов. В более ранних версиях SQL Server максимум по умолчанию составляет 28.
Длиной для числовых типов данных является количество байт, используемых для хранения числа. Длина символьной строки или данных в Юникоде равняется количеству символов. Длина для типов данных binary, varbinary и image равна количеству байт. Например, тип данных int может содержать 10 разрядов, храниться в 4 байтах и не должен содержать десятичный разделитель. Тип данных int имеет точность 10, длину 4 и масштаб 0.
При сцеплении двух выражений типа char, varchar, binary или varbinary длина результирующего выражения является суммой длин двух исходных выражений, но не превышает 8 000 символов.
При сцеплении двух выражений типа nchar или nvarchar длина результирующего выражения является суммой длин двух исходных выражений, но не превышает 4 000 символов.
Если два выражения одного и того же типа данных, но разной длины, сравниваются с помощью предложения UNION, EXCEPT или INTERSECT, длина результата будет равняться длине максимального из двух выражений.
Точность и масштаб числовых типов данных, кроме decimal, фиксированы. Если арифметический оператор объединяет два выражения одного и того же типа, результат будет иметь тот же тип данных с точностью и масштабом, определенными для этого типа. Если оператор объединяет два выражения с различными числовыми типами данных, тип данных результата будет определяться правилами старшинства типов данных. Результат имеет точность и масштаб, определенные для этого типа данных.
Следующая таблица определяет, как вычисляется точность и масштаб результата, если результат операции имеет тип decimal. Результат имеет тип decimal, если одно из следующих утверждений является истиной:
- Оба выражения имеют тип decimal.
- Одно выражение имеет тип decimal, а другое имеет тип данных со старшинством меньше, чем decimal.
Выражения операндов обозначены как выражение e1 с точностью p1 и масштабом s1 и выражение e2 с точностью p2 и масштабом s2. Точность и масштаб для любого выражения, отличного от decimal, соответствуют типу данных этого выражения
e1 + e2 | max(s1, s2) + max(p1-s1, p2-s2) + 1 | max(s1, s2) |
e1 - e2 | max(s1, s2) + max(p1-s1, p2-s2) + 1 | max(s1, s2) |
e1 * e2 | p1 + p2 + 1 | s1 + s2 |
e1 / e2 | p1 - s1 + s2 + max(6, s1 + p2 + 1) | max(6, s1 + p2 + 1) |
e1 { UNION | EXCEPT | INTERSECT } e2 | max(s1, s2) + max(p1-s1, p2-s2) | max(s1, s2) |
e1 % e2 | min(p1-s1, p2 -s2) + max( s1,s2 ) | max(s1, s2) |
* Точность и масштаб результата имеют абсолютный максимум, равный 38. Если значение точности превышает 38, то соответствующее значение масштаба уменьшается, чтобы по возможности предотвратить усечение целой части результата.
SQL Server, SSIS и Biml типы данных
Таблица ниже является упрощенной схемой связи между типами данныхSQL Server, SSIS и Biml. Таблица не включает все возможные комбинации и все виды типов данных, но полезна как быстрая ссылка при разработке и изучении Biml.
bigint | Int64 | DT_I8 | LARGE_INTEGER | Int64 | Int64 |
binary | Object | DT_BYTES | - | Binary | Binary |
bit | Boolean | DT_BOOL | VARIANT_BOOL | Boolean | Boolean |
char | String | DT_STR | VARCHAR | StringFixedLength | AnsiStringFixedLength |
date | Object | DT_DBDATE | DBDATE | Date | Date |
datetime | DateTime | DT_DBTIMESTAMP | DATE | DateTime | DateTime |
datetime2 | Object | DT_DBTIMESTAMP2 | DBTIME2 | DateTime2 | DateTime2 |
datetimeoffset | Object | DT_DBTIMESTAMPOFFSET | DBTIMESTAMPOFFSET | DateTimeOffset | DateTimeOffset |
decimal | Decimal | DT_NUMERIC | NUMERIC | Decimal | Decimal |
float | Double | DT_R8 | FLOAT | Double | Double |
geography | - | DT_IMAGE | - | Object | Object |
geometry | - | DT_IMAGE | - | Object | Object |
hierarchyid | - | DT_BYTES | - | Object | Object |
image (*) | Object | DT_IMAGE | - | Binary | Binary |
int | Int32 | DT_I4 | LONG | Int32 | Int32 |
money | Object | DT_CY, DT_NUMERIC | CURRENCY | Currency | Currency |
nchar | String | DT_WSTR | NVARCHAR | StringFixedLength | StringFixedLength |
ntext (*) | String | DT_NTEXT | - | String | String |
numeric | Decimal | DT_NUMERIC | NUMERIC | Decimal | Decimal |
nvarchar | String | DT_WSTR | NVARCHAR | String | String |
nvarchar(max) | Object | DT_NTEXT | - | - | String |
real | Single | DT_R4 | FLOAT, DOUBLE | Single | Single |
rowversion | Object | DT_BYTES | - | Binary | Binary |
smalldatetime | DateTime | DT_DBTIMESTAMP | DATE | DateTime | DateTime |
smallint | Int16 | DT_I2 | SHORT | Int16 | Int16 |
smallmoney | Object | DT_CY, DT_NUMERIC | CURRENCY | Currency | Currency |
sql_variant | Object | DT_WSTR, DT_NTEXT | - | Object | Object |
table | Object | - | - | - | - |
text (*) | Object | DT_TEXT | - | - | AnsiString |
time | Object | DT_DBTIME2 | DBTIME2 | Time | Time |
timestamp (*) | Object | DT_BYTES | - | Binary | Binary |
tinyint | Byte | DT_UI1 | BYTE | Byte | Byte |
uniqueidentifier | String, Object | DT_GUID | GUID | Guid | Guid |
varbinary | Object | DT_BYTES | - | Binary | Binary |
varbinary(max) | Object | DT_IMAGE | - | Binary | Binary |
varchar | String | DT_STR | VARCHAR | String | AnsiString |
varchar(max) | Object | DT_TEXT | - | - | AnsiString |
xml | Object | DT_NTEXT | - | - | Xml |
(* Данные типы данных будут удалены в будущих версиях SQL Server. Избегайте использование этих типов данных в новых проектах и, по возможности, измените их в текущих проектах.)
SQL Server Data Types Length
Exact Numerics | bit | 1 | 1, 0 | ||
Exact Numerics | tinyint | 1 | 0 to 255 | ||
Exact Numerics | smallint | 2 | -2^15(-32768) to 2^15(32767) | ||
Exact Numerics | int | 4 | -2^31(-2 147 483 648) to (2^31(2 147 483 647) | ||
Exact Numerics | bigint | 8 | -2^63(-9 233 372 036 854 775 808) to 2^63(9 233 372 036 854 775 807) | ||
Exact Numerics | decimal | 1-910-1920-2829-38 | 591317 | from -10^38 +1 through 10^38 -1 | |
Exact Numerics | smallmoney | 4 | -214 748.3648 to 214 748.3647 | ||
Exact Numerics | money | 8 | -922 337 203 685 477.5808 to 922 337 203 685 477.5807 | ||
Approximate Numerics | float | 1-2425-53 | 715 | 48 | -3.40E+38 to -1.18E-38, 0 and 1.18E-38 to 3.40E+38-1.79E+308 to -2.23E-308, 0 and 2.23E-308 to 1.79E+308 |
Date and Time | date | 3 | 0001-01-01 through 9999-12-31January 1, 1 CE through December 31, 9999 CE | ||
Date and Time | smalldatetime | 4 | 1900-01-01 through 2079-06-06January 1, 1900 through June 6, 207900:00:00 through 23:59:59 | ||
Date and Time | time | 8-1112-1314-16 | 345 | 00:00:00.0000000 through 23:59:59.9999999 | |
Date and Time | datetime2 | 1-23-45-7 | 678 | 0001-01-01 through 9999-12-31January 1, 1 CE through December 31, 9999 CE00:00:00 through 23:59:59.9999999 | |
Date and Time | datetime | 8 | anuary 1, 1753 through December 31, 999900:00:00 through 23:59:59.997 | ||
Date and time | datetimeoffset | 26-2930-34 | 810 | 0001-01-01 through 9999-12-31January 1, 1 CE through December 31, 9999 CE00:00:00 through 23:59:59.9999999-14:00 throuth +14:00 | |
Caracter Strings | char | 1-8000 | n | ||
Caracter Strings | varchar | 1-8000 | n + 2 | ||
Caracter Strings | varchar(max) | 1-(2^31 - 1) | 2^31 - 1 + 2 | ||
Caracter Strings | nchar | 1-4000 | |||
Caracter Strings | nvarchar | 1-4000 | |||
Caracter Strings | nvarchar(max) | 1-(2^31 - 1) | |||
Caracter Strings | ntext(*) | 1-(2^30 - 1) | n + n | ||
Caracter Strings | text(*) | 1-(2^31 - 1) | |||
Binary Strings | image(*) | 1-(2^31 - 1) | n | ||
Binary Strings | binary | 1-8000 | n | ||
Binary Strings | varbinary | 1-8000 | n | ||
Binary Strings | varbinary(max) | 1-(2^31 - 1) | n + 2 | ||
Other Data Types | cursor | ||||
Other Data Types | sql_variant | max 8016 | |||
Other Data Types | hierarchyid | max 892 | |||
Other Data Types | rowversion | 8 | |||
Other Data Types | timestamp(*) | ||||
Other Data Types | uniqueidentifier | 16 | |||
Other Data Types | xml | max 2Gb | |||
Other Data Types | table | ||||
Spatial Data Types | geometry | ||||
Spatial Data Types | geography |
SQL Server to MySQL, Oracle, PostgreSQL, SQLite Data Type Mapping
Exact Numerics | bit | TINYINT(1) | NUMBER(3) | BOOLEAN | INTEGER |
Exact Numerics | tinyint | TINYINT(signed) | NUMBER(3) | SMALLINT | INTEGER |
Exact Numerics | smallint | SMALLINT | NUMBER(5) | SMALLINT | INTEGER |
Exact Numerics | int | MEDIUMINT, INT | NUMBER(10) | INT | INTEGER |
Exact Numerics | bigint | BIGINT | NUMBER(19) | BIGINT | INTEGER |
Exact Numerics | decimal | DECIMAL | NUMBER(p[,s]) | DECIMAL(p,s) | REAL |
Exact Numerics | smallmoney | DOUBLE | NUMBER(10,4) | MONEY | REAL |
Exact Numerics | money | DOUBLE | NUMBER(19,4) | MONEY | REAL |
Approximate Numerics | float | FLOATDOUBLE; REAL | FLOAT(49) | DOUBLE PRECISION | REAL |
Date and Time | date | DATE | DATE | TEXT | |
Date and Time | smalldatetime | TIMESTAMP | DATE | TIMESTAMP(0) | TEXT |
Date and Time | time | TIME | TIME | TEXT | |
Date and Time | datetime2 | DDATETIME | TIMESTAMP | TEXT | |
Date and Time | datetime | DATE | TIMESTAMP(3) | TEXT | |
Date and time | datetimeoffset | TIMESTAMPwith time zone | TEXT | ||
Caracter Strings | char | CHAR | CHAR | CHAR | TEXT |
Caracter Strings | varchar | VARCHAR | VARCHAR2 | VARCHAR | TEXT |
Caracter Strings | varchar(max) | VARCHAR2 | TEXT | TEXT | |
Caracter Strings | nchar | NCHAR | NCHAR | TEXT | |
Caracter Strings | nvarchar | NCHAR | VARCHAR | TEXT | |
Caracter Strings | nvarchar(max) | VARCHARTINYTEXTTEXT(M)MEDIUMTEXTLONGTEXT | NCHAR | TEXT | TEXT |
Caracter Strings | ntext(*) | LONG | TEXT | TEXT | |
Caracter Strings | text(*) | LONG | TEXT | TEXT | |
Binary Strings | image(*) | LONGBLOB | LONG RAW | BYTEA | BLOB |
Binary Strings | binary | BINARY | RAW | BYTEA | BLOB |
Binary Strings | varbinary | RAW | BYTEA | BLOB | |
Binary Strings | varbinary(max) | VARBINARY(M)TINYBLOBBLOBMEDIUMBLOBLONGBLOB | RAW | BYTEA | BLOB |
Other Data Types | cursor | TEXT | |||
Other Data Types | sql_variant | BLOB | TEXT | ||
Other Data Types | hierarchyid | TEXT | |||
Other Data Types | rowversion | BYTEA | TEXT | ||
Other Data Types | timestamp(*) | RAW | BYTEA | TEXT | |
Other Data Types | uniqueidentifier | CHAR | CHAR(36) | CHAR(16) | TEXT |
Other Data Types | xml | XML | TEXT | ||
Other Data Types | table | - | |||
Spatial Data Types | geometry | VARCHAR | TEXT | ||
Spatial Data Types | geography | VARCHAR | TEXT |
(* Данные типы данных будут удалены в будущих версиях SQL Server. Избегайте использование этих типов данных в новых проектах и, по возможности, измените их в текущих проектах.)
sqlserver-kit.org
Типы данных SQL Server - SQL программирование
Приводимый ниже список показывает, что Microsoft SQL Server поддерживает большинство типов данных SQL 2003. Также SQL Server поддерживает дополнительные типы данных, используемые для однозначной идентификации строк данных в таблице и на многих серверах, например UNIQUEIDENTIFIER, что соответствует аппаратной философии «роста в ширину», исповедуемой Microsoft (то есть внедрение базы на множестве серверов на платформах Intel), вместо «роста в высоту» (то есть внедрение на одном огромном мощном UNIX сервере или Windows Data Center Server).
Интересное отступление, касающееся дат на SQL Server: SQL Server поддерживает даты начиная с 1753 года. Вы не можете хранить более ранние даты ни в одном типе данных базы SQL Server. Почему? Причина в том, что англоговорящий мир начал использовать григорианский календарь в 1753 году (до сентября 1753 года использовался юлианский календарь), а преобразование дат юлианского календаря в григорианский могло оказаться весьма сложным.
BIGINT (тип данных SQL 2003: BIGINT)
Хранит целые числа со знаком и без знака в диапазоне от -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807. Занимает 8 байт. Смотрите тип INT, где указаны правила свойства IDENTITY, также применимые к типу BIGINT.
BINARY[(n)](тип данных SQL 2003: BLOB)
Хранит двоичное значение фиксированной длины от 1 до 8000 байт. Значение типа BINARY занимает n + 4 байта.
BIT (тип данных SQL 2003: BOOLEAN)
Хранит значения 1, 0 или NULL, которое обозначает «unknown». В одном байте может храниться до 8 значений из столбцов типа BIT таблицы. В еще одном байте можно разместить дополнительные 8 значений типа BIT. Столбцы типа BIT нельзя индексировать.
CHAR[(n)], CHARACTER[(n)] (тип данных SQL 2003: CHARACTER(n))
Хранит символьные данные фиксированной длины от 1 до 8000 символов. Все неиспользованное место по умолчанию заполняется пробелами. (Автоматическое заполнение пробелами можно отключить.) Тип занимает п байт.
CURSOR (тип данных SQL 2003: отсутствует)
Специальный тип данных, используемый для описания курсора в форме переменной или параметра хранимой процедуры OUTPUT. Тип нельзя использовать в инструкции CREATE TABLE. Тип CURSOR может принимать значение NULL.
DATETIME (тип данных SQL 2003: TIMESTAMP)
Хранит значение даты и времени в диапазоне с 01-01-1753 00:00:00 до 31-12-9999 23:59:59. Для хранения требуется 8 байт.
DECIMAL (p. s). DEC (p, s), NUMERIC (p, s) (тип данных SQL 2003: DECIMAL (p, s). NUMERIC (p. s))
Хранит десятичные дроби длиной до 38 цифр. Значения р и s определяют, соответственно, точность и масштаб. Масштаб по умолчанию равен 0. Занимаемое значением место определяется используемой точностью. При точности 1-9 используется 5 байт. При точности 10-19 используется 9 байт. При точности 20-28 используется 13 байт. При точности 29-39 используется 17 байт.
Смотрите тип INT, где указаны правила свойства IDENTITY, также применимые к типу DECIMAL.
DOUBLE PRECISION (тип данных SQL 2003: отсутствует) Синоним FLOAT(53).
FLOAT[(n)] (тип данных SQL 2003: FLOAT, FLOAT(п))
Хранит значения с плавающей точкой в диапазоне от-1.79Е + 308 до 1.79Е + 308. Точность, определяемая параметром п, может изменяться в пределах от 1 до 53. Для хранения 7 цифр (и - от 1 до 24) требуется 4 байта. Значения, превышающие 7 цифр, занимают 8 байт.
IMAGE (тип данных SQL 2003: BLOB)
Хранит двоичное значение переменной длины до 2 147 483 647 байт. Этот тип данных часто используется для хранения графики, звука и файлов, таких, как документы Microsoft Word и электронные таблицы Microsoft Excel. Значениями типа IMAGE нельзя свободно манипулировать. Столбцы типа IMAGE и ТОТимеют множество ограничений на способы использования. Смотрите описание типа TEXT, где приведен список команд и функций, которые применимы и к типу IMAGE.
INT [IDENTITY [(seed, increment)] (тип данных SQL 2003: INTEGER)
Хранит целые числа со знаком или без знака в диапазоне от -2 147 483 648 до 2 147 483 647. Занимает 4 байта. Все целочисленные типы данных, а также типы, хранящие десятичные дроби, поддерживают свойство IDENTITY, identity - это автоматически инкрементируемый идентификатор строки. Обращайтесь к разделу «Инструкция CREATE/ALTERTABLE».
MONEY (тип данных SQL 2003: отсутствует)
Хранит денежные значения в диапазоне от -922337203685477.5808 до 922337203685477.5807. Значение занимает 8 байт.
NCHAR(n), NATIONAL CHAR(n), NATIONAL CHARACTER) (тип данных SQL 2003: NATIONAL СИARACTER(n))
Хранит данные формата UNICODE фиксированной длины до 4000 символов. Для хранения требуется n*2 байт.
NTEXT, NATIONAL TEXT(тип данных SQL 2003: NCLOB)
Хранит фрагменты текста в формате UNICODE длиной до 1 073 741 823 символа. Смотрите описание типа TEXT, где приведен список команд и функций, которые применимы и к типу NTEXT.
NUMERIC(p, s) (тип данных SQL 2003: DECIMAL (p, s))
Синоним типа DECIMAL. Смотрите описание типа INT, где приведены правила, относящиеся к свойству IDENTITY.
NVARCHAR(n), NATIONAL CHAR VARYING(n), NATIONAL CHARACTER VARYING(n) (тип данных SQL 2003: NATIONAL CHARACTER VARYING(n))
Хранит UNICODE-данные переменной длины до 4000 символов. Занимаемое место вычисляется как удвоенное значение длины всех символов, вставленных в поле (число символов * 2). В SQL Server системный параметр SET ANSI_PADDING] для полей NCHAR и NVARCHAR всегда установлен (ON).
REAL, FLOAT(24)(mun данных SQL 2003: REAL)
Хранит значения с плавающей точкой в диапазоне -3.40Е+38 до 3.40Е+38. Занимает 4 байта. Тип REAL функционально эквивалентен типу FLOAT(24).
ROWVERSION (тип данных SQL 2003: отсутствует)
Уникальное число, хранимое в базе данных, которое обновляется всякий раз, когда обновляется строка, В более ранних версиях называется TIMESTAMP.
SMALLDATETIME (тип данных SQL 2003: отсутствует)
Хранит дату и время в диапазоне от '01-01-1900 00:00' до '06-06-2079 23:59' с точностью до минуты. (Минуты округляются до меньшего значения, если значение секунд 29.998 и менее, в противном случае они округляются до большего значения.) Значение занимает 4 байта.
SMALLINT (тип данных SQL 2003: SMALLINT)
Хранит целые числа со знаком или без знака в диапазоне от -32 768 до 32 767. Занимает 2 байта. Смотрите описание типа INT, где приведены правила, относящиеся к свойству IDENTITY, которые также применимы и к этому типу.
SMALLMONEY (тип данных SQL 2003: отсутствует)
Хранит денежные значения в диапазоне от 214748.3648 до -214748.3647. Значения занимают 4 байта.
SQL VARIANT (тип данных SQL 2003: отсутствует)
Хранит значения, относящиеся к другим поддерживаемым SQL Server типам данных, за исключением типов TEXT, NTEXT, ROWVERSION и других значений типа SQL_VARIANT. Может хранить до 8016 байт данных, поддерживаются значения NULL и DEFAULT. Тип SQL_VARIANTиспользуется в столбцах, параметрах, переменных и возвращаемых функциями и хранимыми процедур, ми значениях.
TABLE (тип данных SQL 2003: отсутствует)
Специальный тип, хранящий получившийся в результате работы последнего процесса набор данных. Используется исключительно для процедурной обработки и не может применяться в инструкциях CREATE TABLE. Этот тип данных уменьшает необходимость создания временных таблиц во многих приложениях. Может уменьшить необходимость перекомпиляций процедур, ускоряя, таким образом, выполнение хранимых процедур и пользовательских функций.
TEXT (тип данных SQL 2003: CLOB)
Хранит очень большие фрагменты текста длиной до 2 147 483 647 символов. Значениями типа ТЕХТн IMAGE часто гораздо труднее манипулировать, чем, скажем, значениями типа VARCHAR. Например, нельзя создавать индекс по столбцу типа TEXT или IMAGE. Значениями типа TEXT можно манипулировать при помощи функций DATALENGTH, PATINDEX, SUBSTRING. TEXTPTR и ТЕХ-TVALID, а также команд READTEXT, SET TEXTSIZE, UPDATETEXT и WR1TETEXT.
TIMESTAMP (тип данных SQL 2003: TIMESTAMP)
Хранит автоматически генерируемое двоичное число, обеспечивающее уникальность в текущей базе данных и, следовательно, отличающееся от типа данных TIMESTAMP стандарта ANSI. Тип TIMESTAMP занимает 8 байт. В настоящее время вместо TIMESTAMP для однозначной идентификации строк лучше применять значения типа ROWVERSION.
TINY1NT
Хранит целые числа без знака в диапазоне от 0 до 255 и занимает 1 байт. Смотрите описание типа /Л/Г, где приведены правила, относящиеся к свойству IDENTITY, которые также применимы и к этому типу.
UNIQUEIDENTIFIER (тип данных SQL 2003: отсутствует)
Представляет собой значение, уникальное для всех баз данных и всех серверов. Представлено в виде хххххххх-хххх-хххх-хххх-хххххххххххх, в котором каждый «х» представляет собой шестнадцатеричное число в диапазоне 0-9 или а - f. Единственными операциями, которые можно производить над значениями этого типа, являются сравнение и проверка на NULL. В столбцах этого типа можно использовать ограничения и свойства, за исключением свойства IDENTITY.
VARBINARY[(п)] (тип данных SQL 2003: BLOB)
Представляет собой двоичное значение переменной длины, до 8000 байт. Занимаемое место соответствует размеру вставленных данных плюс 4 байта.
VARCHARf[(n)], CHAR VARYING [(п)], CHARACTER VARYING f(n)J (тип данных SQL 2003: CHARACTER VARYING [(n)]
Хранит символьные данные фиксированной длины размером от 1 до 8000 символов. Занимаемое место равно реальному размеру введенного значения в байтах, а не значению п.
sd-company.su