回答編集履歴
1
説明追記
answer
CHANGED
@@ -7,6 +7,25 @@
|
|
7
7
|
sql = "SELECT フルパス,閲覧数 FROM T_タイトル WHERE [フルパス] LIKE '%" & target & "';"
|
8
8
|
```
|
9
9
|
|
10
|
-
ADOの場合は、ワイルド文字は `%` (DAOの場合は `*`)
|
10
|
+
ADOの場合は、ワイルドカード文字は `%` (DAOの場合は `*`)
|
11
11
|
|
12
|
-
あと、修正前のコードだと、最後に半角空白が付いたものしか抽出されない。
|
12
|
+
あと、修正前のコードだと、最後に半角空白が付いたものしか抽出されない。
|
13
|
+
|
14
|
+
追記
|
15
|
+
---
|
16
|
+
saziさんの回答を見て気づきましたが、ワイルドカードのエスケープも考慮する必要がありますね。
|
17
|
+
`[`は`[[]`でエスケープする必要があります。
|
18
|
+
`]`はエスケープする必要がないです。`[]]`とするとうまくいきません。
|
19
|
+
|
20
|
+
あと、targetに`\`が含まれないときエラーになるのでそれも対策しておいた方がいいかも。
|
21
|
+
|
22
|
+
```vba
|
23
|
+
Dim l As Long
|
24
|
+
l = InStrRev(target, "\")
|
25
|
+
If l > 0 Then target = Mid(target, l)
|
26
|
+
' target = Replace(target, "]", "[]]", , 1) 不要
|
27
|
+
target = Replace(target, "[", "[[]", , 1)
|
28
|
+
|
29
|
+
sql = "SELECT フルパス, 閲覧数 FROM テーブル2 WHERE [フルパス] LIKE '%" & target & "';"
|
30
|
+
|
31
|
+
```
|