teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

説明追記

2021/07/25 01:38

投稿

hatena19
hatena19

スコア34367

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
+ ```