Шаблон или регулярное выражение в Access

В MS Access у меня есть следующий запрос, чтобы удалить все 0 слева от столбца [IDENTIFIER_1], но я должен определить каждый случай (если слева 10 нулей, тогда сделайте подстроку из 11 символов до конца, если слева 9 нулей, то сделайте подстроку от 10 символов до конца и так далее....)

У меня есть запрос:

SELECT YEAR(a.[First Date]) AS [N Year], Month(a.[First Date]) AS [N Month],

  IIF(    inStr(a.[IDENTIFIER_1],  '0000000000')=1, MID(a.[IDENTIFIER_1],11,LEN(a.[IDENTIFIER_1])) ,        

  IIF(    inStr(a.[IDENTIFIER_1],  '000000000')=1, MID(a.[IDENTIFIER_1],10,LEN(a.[IDENTIFIER_1])) , 

  IIF(    inStr(a.[IDENTIFIER_1],  '00000000')=1, MID(a.[IDENTIFIER_1],9,LEN(a.[IDENTIFIER_1])) , 

  IIF(    inStr(a.[IDENTIFIER_1],  '0000000')=1, MID(a.[IDENTIFIER_1],8,LEN(a.[IDENTIFIER_1])) , 

  IIF(    inStr(a.[IDENTIFIER_1],  '000000')=1, MID(a.[IDENTIFIER_1],7,LEN(a.[IDENTIFIER_1])) ,     


 IIF(    inStr(a.[IDENTIFIER_1],  '00000')=1, MID(a.[IDENTIFIER_1],6,LEN(a.[IDENTIFIER_1])) , 


 IIF(    inStr(a.[IDENTIFIER_1],  '0000')=1, MID(a.[IDENTIFIER_1],5,LEN(a.[IDENTIFIER_1])) , 

 IIF(    inStr(a.[IDENTIFIER_1],  '000')=1, MID(a.[IDENTIFIER_1],4,LEN(a.[IDENTIFIER_1])) ,   


 IIF(    inStr(a.[IDENTIFIER_1],  '00')=1, MID(a.[IDENTIFIER_1],3,LEN(a.[IDENTIFIER_1])) ,


 IIF(    inStr(a.[IDENTIFIER_1],  '0')=1, MID(a.[IDENTIFIER_1],2,LEN(a.[IDENTIFIER_1])) , a.[IDENTIFIER_1]


    )    )    )    )    )    )    )    )    )    ) 

    FROM Table1 as a;

но мне интересно, есть ли такая форма, как в java, в которой вы можете сделать какой-то шаблон или регулярное выражение, избегая всего этого кода. Что-то вроде Pattern [0]+ или что-то, что заменяет этот код. Я также пытаюсь сделать что-то вроде этого: например, '[0]+[1-9]', но я не смог найти способ заставить это работать.

Примерами IDENTIFIER_1 могут быть: 000PP2003 или 0006760007, и мне нужно, чтобы они изменились на PP2003 и 6760007. Это может быть случай, когда появляются какие-то нули или пустые значения.


person user3084383    schedule 21.08.2018    source источник
comment
Проверьте этот пост   -  person Wiktor Stribiżew    schedule 21.08.2018
comment
IDENTIFIER_1 содержит только цифры? Могут ли у вас быть строки, в которых он равен Null или содержит пустую строку (нулевой длины)?   -  person HansUp    schedule 21.08.2018
comment
Он также может содержать буквы. Примерами IDENTIFIER_1 могут быть: 000PP2003 или 0006760007, и мне нужно, чтобы они изменились на PP2003 и 6760007. Это может быть случай, когда появляются какие-то нули или пустые значения.   -  person user3084383    schedule 24.08.2018


Ответы (1)


Вы можете использовать функцию val. Прочитайте здесь как val может быть полезен для вашего сценария.

что-то вроде..

SELECT 
    YEAR(a.[First Date]) AS [N Year], 
    Month(a.[First Date]) AS [N Month], 
    val(a.[IDENTIFIER_1]),
    a.[IDENTIFIER_1]
FROM Table1 as a;

EDIT: для замены шаблона см. этот Опубликовать, что может быть полезно с этим шаблоном ^[0]*

person Krish    schedule 21.08.2018
comment
Спасибо. Это работает очень хорошо, когда это только цифры, но дает мне 0, когда есть несколько букв. - person user3084383; 24.08.2018
comment
@user3084383 см. этот ответ - person Krish; 24.08.2018