Drop this function into a module and run this query. It should give you the requested results. You didn't specify data types so I went with variants in the function.
Public Function fnParseDescr(strWork As Variant) As String
Dim vEnd
Dim strTemp As String
Dim strLook As String
Dim strResult As String
strResult = ""
strWork = Trim(CStr(strWork))
Do While Len(strWork) > 0
If InStr(strWork, "~") = 0 Then
strLook = Trim(DLookup("[DESCRIPLong]", "TABLE_B", "[DESCRIPID] = CVar('" & strWork & "')"))
strResult = strResult & "~" & strLook
strWork = ""
Else
vEnd = InStr(strWork, "~") - 1
strTemp = Left(strWork, vEnd)
strLook = Trim(DLookup("[DESCRIPLong]", "TABLE_B", "[DESCRIPID] = CVar('" & strTemp & "')"))
strResult = strResult & "~" & strLook
strWork = Right(strWork, (Len(strWork) - (vEnd + 1)))
strTemp = ""
strLook = ""
End If
Loop
If Left(strResult, 1) = "~" Then strResult = Right(strResult, (Len(strResult) - 1))
fnParseDescr = strResult
Exit Function
End Function
SELECT ID,
PARTNUM,
DESCRIPString,
fnParseDescr([DESCRIPString]) AS PARTDESCRIP
FROM TABLE_A;