обновить до нуля, если условие не соответствует - PullRequest
0 голосов
/ 14 марта 2019

Исходные данные

+-------+----------------+----------------+----------------+
| SeqNo |      Name      |   NameReason   |    NameDate    |
+-------+----------------+----------------+----------------+
|     1 | IronMan        | 'emptystring'' | 2019-03-01     |
|     2 | 'emptystring'' | 'emptystring'' | 'emptystring'' |
|     3 | IronMan        | 'emptystring'' | 'emptystring'' |
|     4 | IronMan        | A              | 'emptystring'' |
|     5 | 'emptystring'' | A              | 'emptystring'' |
|     6 | 'emptystring'' | 'emptystring'' | 2019-03-01     |
|     7 | IronMan        | A              | 2019-03-01     |
|     8 | 'emptystring'' | A              | 2019-03-01     |
+-------+----------------+----------------+----------------+

Требуемые результаты:

+-------+----------------+------------+------------+
| SeqNo |      Name      | NameReason |  NameDate  |
+-------+----------------+------------+------------+
|     1 | NULL           | NULL       | NULL       |
|     2 | NULL           | NULL       | NULL       |
|     3 | NULL           | NULL       | NULL       |
|     4 | NULL           | NULL       | NULL       |
|     5 | NULL           | NULL       | NULL       |
|     6 | NULL           | NULL       | NULL       |
|     7 | IronMan        | A          | 2019-03-01 |
|     8 | 'emptystring'' | A          | 2019-03-01 |
+-------+----------------+------------+------------+

Запрос:

update #A
set NAME=NULL, NameReason=NULL, NameDate=NULL
where NAME<>'' OR NameReason=" OR NameDate <>''

Из приведенного выше запроса выполняется только для SeqNo = 7, какМогу ли я сделать для SeqNo8?

Как я могу обновить другие строки до нуля, если не соответствует условию.Для имени: (принимайте только emptyString или символ), Для nameReason: (принимайте только символ), Для namedate: (принимайте только дату).

Работа с записями по 10 миллионов, 30 протоколов.Не может быть жестким кодом.

Ответы [ 2 ]

0 голосов
/ 14 марта 2019

Пожалуйста, попробуйте это.

Update #A
set NAME=NULL, NameReason=NULL, NameDate=NULL
where NAME='' OR NameReason='' OR NameDate = ''
0 голосов
/ 14 марта 2019

Как я могу обновить другие строки до нуля, если не соответствует условию.Для имени: (принимайте только emptyString или символ), Для nameReason: (принимайте только символ), Для namedate: (принимайте только дату).

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

Поэтому я думаю, что ваше обновление просто должно быть:

update #A
set NAME=NULL, NameReason=NULL, NameDate=NULL
where NameReason=" OR NameDate=''

Это также можно записать так:

update #A
set NAME=NULL, NameReason=NULL, NameDate=NULL
where not (NameReason=" and NameDate='')

например, "обнулить каждую запись, где имя или имя пусто" / "обнулить каждую запись, в которой отсутствует значение как по имени, так и по имени"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...