Замена подстановочного знака в запросе SQL - PullRequest
1 голос
/ 21 марта 2019

Я пытаюсь написать запрос в Access. Можно ли сделать замену подстановочным знаком (что-то вроде этого)?

SELECT REPLACE(MyStatus, '<div' & % & '>', '') FROM tblWork

У меня есть данные, подобные этому: <div class="Style123">Status: 1/01/2019 Work was completed.

Я хочу преобразовать результаты запроса в это: Status: 1/01/2019 Work was completed.

Примечание: я НЕ хочу обновлять данные в таблице.

Ответы [ 3 ]

0 голосов
/ 22 марта 2019

Вы можете создать крошечную вспомогательную функцию:

Public Function StripDiv(ByVal Input As String) As String

    Dim Result As String

    If UBound(Split(Input, ">")) > 0 Then
        Result = Split(Input, ">")(1)
    Else
        Result = Input
    End If

    StripDiv = Result

End Function

Тогда:

SELECT StripDiv([MyStatus]) FROM tblWork
0 голосов
/ 22 марта 2019

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

select right( MyStatus 
, LEN(MyStatus ) - InStr(MyStatus , '>')
)
from tblWork;
0 голосов
/ 21 марта 2019

Не без VBA.

Поскольку вы можете использовать функции VBA в запросах, это, безусловно, возможно.Вы можете использовать следующую функцию:

Public Function LikeReplace(strInput As String, strPattern As String, strReplace As String, Optional start As Long = 1)
    Dim LenCompare As Long
    Do While start <= Len(strInput)
        For LenCompare = Len(strInput) - start + 1 To 1 Step -1
            If Mid(strInput, start, LenCompare) Like strPattern Then
                strInput = Left(strInput, start - 1) & strReplace & Right(strInput, Len(strInput) - (start + LenCompare - 1))
            End If
        Next
        start = start + 1
    Loop
    LikeReplace = strInput
End Function

Для сопоставления используется шаблон VBA LIKE.Затем вы можете реализовать его в своем запросе:

SELECT LikeReplace(MyStatus, '<div*>', '') FROM tblWork

Производительность, однако, пострадает как из-за невысокой производительности функции VBA, так и из-за вызова VBA из запросов.И это не может быть использовано из внешних приложений.

Для более сложного сопоставления с образцом вы можете использовать пользовательский интерфейс VBA, использующий регулярное выражение, как общее здесь от Krish KM

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