Почему оператор IIF неверно оценивает часть TRUE при попытке форматирования почтовых индексов? - PullRequest
0 голосов
/ 20 февраля 2019

У меня есть поле ZipCode в одной из моих таблиц.

Большинство значений являются типичными 5-значными почтовыми индексами, однако некоторые из них имеют тире и дополнительные 4 цифры.В поле задан текстовый тип данных.

Моя проблема в том, что я хотел бы сохранить начальные нули, когда это уместно, но не урезать почтовые индексы, которые имеют дополнительные 4 цифры в конце.

В настоящее время значения являются одними из следующих (все типы текстовых данных):

  • 5429
  • 34567
  • 21134-8733

Ожидаемые результаты должны быть следующими:

  • 05429
  • 34567
  • 21134-8733

Iсоздали запрос ниже.Он не работает должным образом, он просто возвращает исходное значение поля.

UPDATE [Export file2] 
SET [Export file2].ZipCode = 
IIf(Len([Export file2].[ZipCode])<6,Format([Export file2].[ZipCode],"00000"),[Export file2].[ZipCode]);

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

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

Если вы правильно поняли, чего вы хотите достичь, выможно использовать функцию Right следующим образом:

UPDATE [Export file2] 
SET [Export file2].ZipCode = 
IIf
(
    Len([Export file2].[ZipCode]) < 6,
    Right("00000" & [Export file2].[ZipCode],5),
    [Export file2].[ZipCode]
)

В качестве альтернативы, если вы также хотите убедиться, что почтовый индекс «другого» типа также имеет соответствующие начальные нули (при условии, что значение будет всегда длиной не более 10 символов), возможно, подходит следующее:

UPDATE [Export file2] 
SET [Export file2].ZipCode = 
Right("00000" & [Export file2].[ZipCode], IIf(Len([Export file2].[ZipCode]) < 6,5,10)
0 голосов
/ 20 февраля 2019

Форматировать не будет форматировать текстовое поле, поэтому сначала сделайте числовое значение:

UPDATE [Export file2] SET [Export file2].ZipCode = IIf(Len([Export file2].[ZipCode])<6,Format(Val([Export file2].[ZipCode]),"00000"),[Export file2].[ZipCode]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...