suneel kumar gupta Ответов: 2

Проверка данных при переносе с одного сервера на другой в SQL server.


Я хочу проверить данные ниже столбца в соответствии с определенным типом данных и нулевыми значениями.

Столбец1 числовые(18,8) нуль

Column2 Varchar(10) not null

Column3 Int not null

Столбец_4 инт нуль

column5 бит not null

column6 бит null

column7 datetime null



-- Как проверить значение в столбце 6 типа бит

Что я уже пробовал:

Я уже пробовал--

ВЫБИРАТЬ
Случай, когда Column1 не является нулевым и является числовым(Column1)<>1, ТО 0 ELSE 1 заканчивается как 'Column1',
Случай, когда Столбец2 имеет значение null или Столбец2=" или " лен " (Столбец2) и GT;50 ТО 0, иначе 1 конец как 'Столбец2',
Случай, когда ISNULL(Column3,")=" или Column3 типа '%[^0-9]%' , ТО 0 ELSE 1 заканчивается как 'Column3',
Случай, когда ISNULL(Column4,")<>" И Column4 не похожи на '%[^0-9]%', ТО 0 ELSE 1 заканчивается как 'Column4'
Случай, когда column7 не является нулевым и ISDATE(column7)=0, то 50 ELSE 0 заканчивается как 'column7'

ИЗ ТАБЛ. 1

Kornfeld Eliyahu Peter

Если столбец имеет тип X и NULL/NOT NULL, вы не сможете вставить какие-либо другие данные, так зачем проверять?! SQL создаст для вас исключение...

suneel kumar gupta

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

Kornfeld Eliyahu Peter

Вы не должны - SQL будет, и если значение не подходит, у вас будет исключение!!!

suneel kumar gupta

на самом деле я хочу перенести данные с другого сервера через планировщик (задание SQL), и если проверка данных не удалась, то я хочу сохранить, в каких столбцах данные недействительны.

Допустим, у меня есть 5 столбцов, и при проверке данных в 2 столбцах данные недопустимы, чем имя столбца хранилища и пользовательская ошибка, определенная для столбца than.

Kornfeld Eliyahu Peter

Если вы переходите с SQL на SQL, то как данные могут быть недействительными? Вы переезжаете данных nvarchar в тип int или float для бит? Если столбцы в источнике и цели имеют одинаковое объявление типа, то вам нечего бояться...

suneel kumar gupta

да , может быть, потому, что данные предоставляются от разных разных поставщиков.

Kornfeld Eliyahu Peter

Поставщик не имеет значения. Пока вы двигаетесь от бита к биту и от Инта к Инту...
Если вы хотите конвертировать данные, вы не можете иметь что-то автоматическое, но вы должны писать запросы для преобразования таблицы в таблицу...

Mike V Baker

Я думаю, что существует мысль о том, что база данных другого поставщика может быть не настроена с этими ограничениями, поэтому suneel пытается сначала проверить данные.

Mike V Baker

В этом случае (значение столбца 6 бит) Я бы, вероятно, рассматривал входящий 0 как 0, NULL как NULL, а все остальное как 1
У меня есть к вам вопрос, эта схема проверки входящих данных... как вы записываете, что некоторые записи не прошли проверку? Существует ли отчет об исключениях с текстовым полем, содержащим входящие необработанные данные?

2 Ответов

Рейтинг:
1

Member 11621026

select isshared,case when isshared = 0 then 'ABC' when isshared=1 then 'XYZ' end as aaa from kk


Для моей точки зрения, когда я понимаю вопрос для вас.

в противном случае есть два способа проверить значение битового файла

правда ложь
0 1


Рейтинг:
0

Member 11621026

вы пропустили запятую в последнем ряду

SELECT
CASE WHEN Column1 IS NOT NULL AND ISNUMERIC(Column1)<>1 THEN 0 ELSE 1 END AS 'Column1', 
CASE WHEN Column2 IS NULL OR Column2='' OR LEN(Column2)>50 THEN 0 ELSE 1 END AS 'Column2', 
CASE WHEN ISNULL(Column3,'')='' OR Column3 LIKE '%[^0-9]%' THEN 0 ELSE 1 END AS 'Column3',
CASE WHEN ISNULL(Column4,'')<>'' AND Column4 NOT LIKE '%[^0-9]%' THEN 0 ELSE 1 END AS 'Column4', 
CASE WHEN column7 IS NOT NULL AND ISDATE(column7)=0 THEN 50 ELSE 0 END AS 'column7'

FROM TABLE1


CHill60

Вопрос состоял в том, "как проверить значение в столбце 6 - Это бит типа". Вы правы насчет синтаксической ошибки, но вы не ответили на заданный вопрос.