Вы можете использовать функцию VBA Split ().Вы даете ему строку и указываете, что использовать в качестве разделителя;он возвращает массив подстрок.В вашем случае кажется, что вам нужна вторая подстрока, и поскольку нумерация массива начинается с нуля:
? Split("NWST/330/23/WT6", "/")(1)
330
Вы не можете использовать эту функцию непосредственно в запросе Access, но вы можете создать пользовательскуюфункция, которая его использует.
Public Function CustomSplit(ByVal pInput As String) As String
CustomSplit = Split(pInput, "/")(1)
End Function
Затем из окна Immediate:
? CustomSplit("NWST/330/23/WT6")
330
Таким образом, вы можете использовать CustomSplit () в запросе, который вы запускаете из сеанса Access.Однако, если вы используете какой-либо другой метод (классический ASP, Dot.Net и т. Д.) Для запроса базы данных Access, пользовательские функции недоступны, поэтому вам придется использовать другой подход.
Итакесли ваш текст находится в поле с именем raw_text, запрос может быть таким:
SELECT
raw_text,
CustomSplit(raw_text) AS middle_section
FROM YourTableNameHere;
Если вы предпочитаете запрос без пользовательской функции, вы можете использовать некоторые функции, которые вы упомянули в своем вопросе.
SELECT
raw_text,
Mid(Left(raw_text, InStr(InStr(1, raw_text, "/") + 1,
raw_text, "/") - 1), InStr(1, raw_text, "/") + 1)
AS middle_section
FROM YourTableNameHere;
Любой из этих запросов выдает это в качестве вывода:
raw_text middle_section
NWST/330/23/WT6 330
NTW/1010/43/TY7 1010
TYQT/99/WYT3 99