У меня есть столбец в моей таблице базы данных доступа, я выполнил запрос, чтобы сделать его правильным, используя StrConv([MyColumn],3)
, но последние две буквы являются именами состояний, и этот запрос преобразует SOmeThing, soMethINg, NY
в Something, Something, Ny
, я хочу получить результат как Something, Something, NY
Есть ли другой запрос, который я могу бежать за заглавной последней буквой?
Сделать заглавной только последнюю букву в строке - MS Access
Ответы (2)
Вы можете использовать:
UcaseLast: Left([YourColumn], Len([YourColumn]) - 1) & UCase(Right([YourColumn], 1))
Что ж, большинство людей посоветовали бы вам хранить «адрес», «город» и «штат» как отдельные поля. Затем вы подбираете каждый случай по отдельности и объединяете их вместе. Если вы можете это сделать... это ваш лучший подход.
Если это база данных или файл, который был брошен вам, и вы не можете внести изменения в поле/таблицу... все еще возможно получить желаемые результаты. Однако вам лучше убедиться, что все строки заканчиваются вашим кодом состояния. Также убедитесь, что у вас нет иностранных адресов, поскольку в Канаде (и других странах) в конце кода провинции используется более двух букв.
Но если вы уверены, что все записи содержат двухбуквенные сокращения состояний, вы можете продолжить со следующего:
MyColumnAdj: StrConv(Mid([MyColumn],1,len([MyColumn])-2),3) + StrConv(right([MyColumn],2),1)
Это переводит среднюю строку вашего [MyColumn] из позиции 1 в длину вашего [MyColumn] минус 2 (без кода состояния), и это все правильно.
Затем он объединяется (используя знак «плюс») с правой строкой [MyColumn] длиной 2 и в верхнем регистре.
Опять же, это опасно, если поле не имеет кода состояния в конце строки.
Удачи. Надеюсь это поможет. :)