Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 тип данных  [new]
kornilov
Member

Откуда:
Сообщений: 92
нужно провести проверку по типу данных
какой оператор за это отвечает
if (???) =bit
insert ...
else ...
25 янв 12, 13:29    [11967448]     Ответить | Цитировать Сообщить модератору
 Re: тип данных  [new]
Shakill
Member

Откуда: мск
Сообщений: 1887
kornilov, тип поля можно вытащить из information_schema.columns или sys.columns
25 янв 12, 13:33    [11967502]     Ответить | Цитировать Сообщить модератору
 Re: тип данных  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3265
kornilov,

Хня, какая та.
из INFORMATION_SCHEMA можно получить метаданые типов колонок таблиц и представлений и параметров запросов.

Нахрена вообще в вот это вот ваше проверять типы параметров ?
25 янв 12, 13:35    [11967519]     Ответить | Цитировать Сообщить модератору
 Re: тип данных  [new]
kornilov
Member

Откуда:
Сообщений: 92
Ken@t,
есть большая база данных, я её анализирую, но некоторые строки пропускаются из за ошибки
operand data type bit is invalid for max operator
поэтому я хочу вывести данные
в виде
if тип = bit
insert @test
exec ( 'например 0'
else
insert @test
exec ( max value)
25 янв 12, 13:41    [11967609]     Ответить | Цитировать Сообщить модератору
 Re: тип данных  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
kornilov,

sql_variant?
25 янв 12, 13:44    [11967660]     Ответить | Цитировать Сообщить модератору
 Re: тип данных  [new]
kornilov
Member

Откуда:
Сообщений: 92
WarAnt,
я не могу поменять тип данных
25 янв 12, 13:54    [11967783]     Ответить | Цитировать Сообщить модератору
 Re: тип данных  [new]
Shakill
Member

Откуда: мск
Сообщений: 1887
kornilov
Ken@t,
есть большая база данных, я её анализирую, но некоторые строки пропускаются из за ошибки
operand data type bit is invalid for max operator
поэтому я хочу вывести данные
в виде
if тип = bit
insert @test
exec ( 'например 0'
else
insert @test
exec ( max value)


покажите запрос, который выдаёт эту ошибку
25 янв 12, 13:56    [11967800]     Ответить | Цитировать Сообщить модератору
 Re: тип данных  [new]
kornilov
Member

Откуда:
Сообщений: 92
Shakill,

use ims
declare @tab varchar(max)
declare @col varchar(max)
declare @rez as table ([table] varchar(max), [column] varchar(max),[count] varchar(max),
[count_dis] varchar(max),[max] varchar(max),[min] varchar(max))
DECLARE Cur CURSOR
FOR
select tbl.name as tabl, col.name as colum
from sys.tables as tbl
join sys.columns as col on tbl.object_id = col.object_id
open Cur
FETCH next FROM Cur
into @tab,@col
while @@FETCH_STATUS=0
begin
waitfor delay '00:00:02'
insert @rez
exec ('select '''+@tab+''','''+@col+''', count(*),count (distinct(['+@col+'])),
max(['+@col+']),min(['+@col+']) from ims.['+@tab+']')
fetch next from Cur
into @tab,@col
end
select * from @rez
close Cur
deallocate cur
25 янв 12, 13:59    [11967844]     Ответить | Цитировать Сообщить модератору
 Re: тип данных  [new]
Shakill
Member

Откуда: мск
Сообщений: 1887
kornilov, ну так у вас всё готово почти. к sys.columns приджойните sys.types, оттуда берете название типа и решаете, добавлять в динамический запрос max или нет
25 янв 12, 14:03    [11967890]     Ответить | Цитировать Сообщить модератору
 Re: тип данных  [new]
kornilov
Member

Откуда:
Сообщений: 92
Shakill,

join ить когда определяю курсор, или в цикле
25 янв 12, 14:28    [11968194]     Ответить | Цитировать Сообщить модератору
 Re: тип данных  [new]
Shakill
Member

Откуда: мск
Сообщений: 1887
kornilov, в запросе для курсора
25 янв 12, 14:37    [11968309]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить