Function ReplaceWhereLiterals(sqlText As String) As String
Dim reg As Object
Set reg = CreateObject("VBScript.RegExp")
reg.IgnoreCase = True
reg.Global = True
' 1: WHERE/AND/OR
' 2: 空白
' 3: カラム名
' 4: 演算子 (=, <>, <=, >=, <, >)
' 5: リテラル値(シングルクォート付き文字列/数値/英数字/その他)
reg.Pattern = "(WHERE|AND|OR)(\s+)([A-Za-z_][A-Za-z0-9_]*?)\s*(=|<>|<=|>=|<|>)\s*('[^']*'|\d+|[A-Za-z0-9]+|[^\s\)\(]+)"
' 置換: 「WHERE カラム 演算子 リテラル」→「WHERE カラム 演算子 [カラム]」
ReplaceWhereLiterals = reg.Replace(sqlText, "$1$2$3$4[$3]")
End Function
Register as a new user and use Qiita more conveniently
- You get articles that match your needs
- You can efficiently read back useful information
- You can use dark theme