MS Access - вставка символа в строку - с различной длиной символов - PullRequest
1 голос
/ 21 апреля 2020

В моей таблице Ms Access есть следующее поле tblCode :

      Code
      A00
      A000
      A0102
      Z688594

6 000+ записей

Я пытаюсь вставить "." символ, после 3-го символа в этом поле, поэтому обновленный результат должен быть:

     Code      Code1
     A00       A00
     A000      A00.0
     A0102     A01.02
     Z688594   Z68.8594

Мой код для этого поля в представлении «Дизайн» MsAccess:

     Code1: IIf(Len([Code])<=3,[Code],Left([Code],3) & "." & Right([Code],1))

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

У меня результат как

       Code1
       A00
       A00.0
       A01.2
       Z68.4

Пожалуйста, помогите мне отрегулировать ПРАВУЮ сторону моего результата!

Ответы [ 2 ]

2 голосов
/ 21 апреля 2020

Вместо использования Right / Len для добавления символов после ".", Вероятно, лучше просто использовать Mid:

SELECT Code, 
    IIf(Len([Code])<=3,[Code],Left([Code],3) & "." & Mid([Code],4)) AS ConvertedCode
FROM tblCode;

С уважением,

1 голос
/ 21 апреля 2020

Мы можем попробовать использовать комбинацию LEN и конкатенацию здесь:

SELECT
    [Code],
    IIF(LEN([Code]) <= 3, [Code],
        LEFT([Code], 3) & "." & RIGHT([Code], LEN([Code]) - 3)) AS Code1
FROM yourTable;

Единственное изменение в моих логиках c по сравнению с тем, что у вас уже есть, заключается в том, что длина передана в RIGHT() теперь имеет значение Dynami c и использует оставшееся количество символов в коде (смещение на 3, уже использованные в левой части точки).

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