Форум: "Базы";
Текущий архив: 2005.12.04;
Скачать: [xml.tar.bz2];
ВнизПроблема с правильным определением типа поля в MS SQL. Найти похожие ветки
← →
Карелин Артем © (2005-10-19 09:12) [0]Мне надо вытащить тип поля таблицы и вставить его в DDL запрос. Только начал заниматься этим, как наступил на грабли:
Поле описано как[field1] float(53)
, если же смотреть результаты запроса к таблице с этим полем типаEXEC sp_columns @table_name = table2
, то видим, чтоprecision = 15, length = 8, scale=null и radix=10
.
Где там кроется загадочное 53 и как это трактовать результаты запросы непонятно.
Как получить правильный тип поля и какие еще типы полей требуют такого шаманства?
← →
Johnmen © (2005-10-19 09:41) [1]>Поле описано как [field1] float(53),
???????? Где описано ?????
← →
Карелин Артем © (2005-10-19 09:49) [2]
> Johnmen © (19.10.05 09:41) [1]CREATE TABLE [table2] (
[id_table2] bigint IDENTITY(0, 1) NOT FOR REPLICATION NOT NULL,
[Name1] nvarchar(60) COLLATE Cyrillic_General_CI_AS,
[Name2] nvarchar(40) COLLATE Cyrillic_General_CI_AS,
[Date_time] datetime,
[Money_] money,
[Integ] int,
[Workstation] varchar(60) COLLATE Cyrillic_General_CI_AS DEFAULT (@@servername) NOT NULL,
[field1] float(53),
[field2] binary(1),
CONSTRAINT [PK_table2] PRIMARY KEY ([id_table2], [Workstation])
)
ON [PRIMARY]
GO
← →
Johnmen © (2005-10-19 09:51) [3]>Карелин Артем © (19.10.05 09:49) [2]
Это ты сам написал или снял скрипт создания с существующей таблицы?
← →
MOA © (2005-10-19 09:54) [4]Цитата из BOL (Transact-SQL Reference - float and real):
n is Precision Storage size
1-24 7 digits 4 bytes
25-53 15 digits 8 bytes
Note Microsoft® SQL Server™ 2000 treats n as one of two possible values. If 1<=n<=24, n is treated as 24. If 25<=n<=53, n is treated as 53.
Удачи!
← →
Карелин Артем © (2005-10-19 09:57) [5]
> Johnmen © (19.10.05 09:51) [3]
Взял базу, на которой провожу эксперименты, открыл ее в EMS MS SQL Manager, открыл таблицу и скопировать часть скрипта с вкладки DDL.
← →
Карелин Артем © (2005-10-19 09:58) [6]
> MOA © (19.10.05 09:54) [4]
Спасибо большое. С меня пузырь :)
← →
Johnmen © (2005-10-19 10:17) [7]>Карелин Артем © (19.10.05 09:57) [5]
По-моему, ты вводишь в заблуждение.
- где такая закладка DDL
- в сгенерённом скрипте не м.б. указано float(53) по определению
Ну а про типы с пл.точкой уже сказали...
← →
Nikolay M. © (2005-10-19 10:25) [8]
> как это трактовать результаты запросы непонятно.
> Как получить правильный тип поля и какие еще типы полей
> требуют такого шаманства?
Последовательность получения ответа самостоятельно такая:
1) запустить профайлер, в нем запустить новый trace, очистить результаты
2) в QA ткнуть правой лапой на таблицу, выбрать пункт CREATE, чтобы QA показал скрипт для создания таблицы
3) возвращаемся в профайлер, выделяем все пойманные event-ы в верхней части окна, копируем все команды sql из нижней части окна в QA
4) анализируем получившийся скрипт, в частности, видим полезную, но недокументированную ХПsp_MShelpcolumns
, смысл ее вполне понятен, для получения бОльшей информации можно посмотреть ее текст.
← →
Карелин Артем © (2005-10-19 10:42) [9]
> Johnmen © (19.10.05 10:17) [7]
Снимок экрана дать? ))
← →
Карелин Артем © (2005-10-19 10:46) [10]
> Johnmen © (19.10.05 10:17) [7]
Название софта в моем посте посмотри еще раз повнимательнее и сравни с тем, которым пользуешься.
← →
Johnmen © (2005-10-19 10:53) [11]>Карелин Артем © (19.10.05 10:42) [9]
>Снимок экрана дать? ))
Да, пожалуйста.
← →
Карелин Артем © (2005-10-19 12:07) [12]
> Johnmen © (19.10.05 10:53) [11]
Вечером выложу где-нибудь.
← →
Danilka © (2005-10-19 13:04) [13]Johnmen © (19.10.05 10:53)
В MSSQL, "float( n )" - n означает кол-во битов для мантиссы, а не кол-во цифер :)
то-есть, если, например, в IB есть FLOAT - 4 байта и DOUBLE PRECISION 8 байт, то в MSSQL им соотетствуют float(24) и float(53)
Вто-такая вот заморочка. :)
← →
Johnmen © (2005-10-19 13:19) [14]>Danilka © (19.10.05 13:04) [13]
Да нет никакой заморочки.
Как интерпретировать float(X) в самописном скрипте создания таблицы уже сказал BOL устами MOA ©
И IB_FLOAT = MSSQL_REAL, IB_DOUBLE PRECISION = MSSQL_FLOAT
← →
Danilka © (2005-10-19 13:46) [15]Johnmen © (19.10.05 13:19)
Дык, а чему ты тогда удивляешься, честно говоря, не понял.. :)
Для меня самое больше удивление в свое время было с тем, что непонятно, нафига этот параметр n придумали для флоата. :)
← →
Johnmen © (2005-10-19 14:02) [16]>Danilka © (19.10.05 13:46) [15]
Хм... Я нигде не удивлялся...:)
Просто просил автора показать, где там "вкладка DDL"
← →
Карелин Артем © (2005-10-19 23:00) [17]
> Johnmen © (19.10.05 14:02) [16]
У меня на работе вырубили электричество в неподходящий момент, однако скриншот я тебе все-таки покажу, хоть и не свой. http://www.sqlmanager.net/en/products/mssql/manager/screenshots/11
Однако внимательнее читай что пишут. Может тогда и сможешь отличить надпись Enterprise manager от EMS MS SQL manager.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2005.12.04;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.327 c