ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

QNo.3838938 LIKEのスペースの取扱い
質問者:diolab 今Acsessに

2, 3, 16, 17, 25, ・・・

と言った風に
数字+コンマ+スペース・・・
と言ったランダムな数字の列が格納されています.

この文字列に任意の数字が含まれていた場合
レコードを抽出した意のですが、

LIKE '%数字,%'としたところ
数字が1の時21や31も抽出されてしまい困っています.

例のような文字列の中にある数字を
桁に依存しないように抽出する方法はないでしょうか?

お力添えをお願いいたします.
困り度:
  • 困っています
質問投稿日時:
08/03/06 20:00
この質問に対する回答は締め切られました。

回答良回答10pt

ANo.4 Function regexp_match(field, patern) As Integer
Dim myRegExp As New RegExp

myRegExp.Pattern = patern
myRegExp.IgnoreCase = False
myRegExp.Global = False
If myRegExp.Test(field) Then
regexp_match = 0
Else
regexp_match = -1
End If

End Function
という関数をモジュールで定義して

クエリで
SELECT table1.*
FROM table1
where regexp_match( [フィールド名], "\s*25(,|$)" ) = 0
にするというのはどうでしょう。
回答者:nora1962
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:
08/03/14 17:15
この回答へのお礼この回答にお礼をつける(質問者のみ)

回答

ANo.3 スペースが問題を引き起こすようなら
前の区切りもカンマにすれば

,2,3,16,17,25,

LIKE '%,' & 数字 & ',%'
回答者:CHRONOS_0
種類:回答
どんな人:経験者
自信:自信あり
回答日時:
08/03/09 21:05
この回答へのお礼この回答にお礼をつける(質問者のみ)

回答

ANo.2 >1のとき1と11が抽出されたんですが、
そんなはずありませんよ

1の時には"* 1,*"
11の時には"* 11,*"
という文字列を比較することになります
同じじゃないことは明白ですよね

>LIKE '% ' & 数字 & ',%'
前の%の後ろのスペースを抜かしているのでは
回答者:CHRONOS_0
種類:回答
どんな人:経験者
自信:自信あり
回答日時:
08/03/08 23:49
この回答へのお礼返信ありがとうございます.

半角スペース入っています.
色々試したのですが、スペース無視されている印象です.

正確にはAccess2003で作って、
ASPのADOを使って抽出しているのですが
これが原因でしょうか?

すいません。

回答良回答20pt

ANo.1 今のままじゃ無理ですね
開始位置と終了位置を判定できるようにしてやる必要があります

2, 3, 16, 17, 25,

のように変更すれば可能です

最初の数字の前にもスペース
最後の数字の後ろにもカンマ
を付加しています

抽出条件は
LIKE '% ' & 数字 & ',%'
回答者:CHRONOS_0
種類:回答
どんな人:経験者
自信:自信あり
回答日時:
08/03/07 00:48
この回答へのお礼ありがとうございます。

データやっぱりいじらないといけないんですね。
覚悟決めてやります。

でも、このやり方でも
テストデータでやったところ、
1のとき1と11が抽出されたんですが、
やり方が悪いのでしょうか?