質問編集履歴

2

内容を追記しました。

2021/02/10 09:13

投稿

Natchin
Natchin

スコア10

test CHANGED
File without changes
test CHANGED
@@ -46,13 +46,19 @@
46
46
 
47
47
  ※(2)(3)、(4)(5)はそれぞれを有効化し、結果をチェック済
48
48
 
49
- しかしながら [*]アスタリスク と [?]クエスチョンマーク を含んだデータだけが正常にデータ結果として表示されません。
49
+ しかしながら、テキストボックスに [*]アスタリスク と [?]クエスチョンマーク を設定した場合、このデータだけが正常にデータ結果として表示されません。
50
50
 
51
51
  ※他の文字となる \ % _ などは(1)と同処理にて、正常にエスケープ処理ができ、データ結果も正常です
52
52
 
53
53
 
54
54
 
55
+ 又、テキストボックスを参照せず、直接、以下のように値を設定すると正常なデータが表示されます。
55
56
 
57
+ ```SQL
58
+
59
+ SELECT test.* FROM test WHERE test.a Like "*[*]*";
60
+
61
+ ```
56
62
 
57
63
 
58
64
 
@@ -66,6 +72,6 @@
66
72
 
67
73
  ※[*]を指定しているはずが、[%]として実行されているので、これが原因だと思われます
68
74
 
69
- 色々検証をしていますが、思うような結果ません。
75
+ 色々検証をしていますが、上記の[%]を[*]に設定するエスケープ処理分かりません。
70
76
 
71
77
  アドバイス頂けると助かります。

1

escape_replace自己関数の内容を追記しました

2021/02/10 09:13

投稿

Natchin
Natchin

スコア10

test CHANGED
File without changes
test CHANGED
@@ -14,23 +14,49 @@
14
14
 
15
15
  エスケープ文字に対応する為、escape_replace自己関数を作成し、エスケープ処理を行っています。
16
16
 
17
- しかしながら *アスタリスク と ?クエスチョンマーク を含んだデータだけが正常にデータ結果として表示されません。
17
+ ```VBA
18
18
 
19
- ※他の文字となる \ % _ などは正常にエスケープ処理ができ、データ結果も正常です
19
+ Public Function escape_replace(myStr As String) As String
20
20
 
21
21
 
22
22
 
23
- アスタリスクのエスケープ処理としては以下の変換(REPLACE関数)などを色々と試しました。
23
+ If myStr Like "*[]*" Then myStr= Replace(myStr, "\", "\") ' (1)
24
24
 
25
25
 
26
26
 
27
- (1)* [*]
27
+ If myStr Like "*[*]*" Then myStr= Replace(myStr, "*", "[*]") ' (2)
28
28
 
29
- (2) *
29
+ If myStr Like "*[*]*" Then myStr= Replace(myStr, "*", "*") ' (3)
30
+
31
+
32
+
33
+ If myStr Like "*[?]*" Then myStr= Replace(myStr, "?", "[?]") ' (4)
34
+
35
+ If myStr Like "*[?]*" Then myStr= Replace(myStr, "?", "?") ' (5)
30
36
 
31
37
 
32
38
 
39
+ escape_replace= myStr
40
+
41
+
42
+
43
+ End Select
44
+
45
+ ```
46
+
47
+ ※(2)(3)、(4)(5)はそれぞれを有効化し、結果をチェック済
48
+
49
+ しかしながら [*]アスタリスク と [?]クエスチョンマーク を含んだデータだけが正常にデータ結果として表示されません。
50
+
51
+ ※他の文字となる \ % _ などは(1)と同処理にて、正常にエスケープ処理ができ、データ結果も正常です
52
+
53
+
54
+
55
+
56
+
57
+
58
+
33
- ログ(general_log)を確認したところ、上記の(1)に関しては、以下のクエリが実行されていました。
59
+ ログ(general_log)を確認したところ、上記の(2)に関しては、以下のクエリが実行されていました。
34
60
 
35
61
  ```ここに言語を入力
36
62