- ベストアンサー
LIKEのスペースの取扱い
今Acsessに 2, 3, 16, 17, 25, ・・・ と言った風に 数字+コンマ+スペース・・・ と言ったランダムな数字の列が格納されています. この文字列に任意の数字が含まれていた場合 レコードを抽出した意のですが、 LIKE '%数字,%'としたところ 数字が1の時21や31も抽出されてしまい困っています. 例のような文字列の中にある数字を 桁に依存しないように抽出する方法はないでしょうか? お力添えをお願いいたします.
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
今のままじゃ無理ですね 開始位置と終了位置を判定できるようにしてやる必要があります 2, 3, 16, 17, 25, のように変更すれば可能です 最初の数字の前にもスペース 最後の数字の後ろにもカンマ を付加しています 抽出条件は LIKE '% ' & 数字 & ',%'
その他の回答 (3)
- nora1962
- ベストアンサー率60% (431/717)
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 にするというのはどうでしょう。
- CHRONOS_0
- ベストアンサー率54% (457/838)
スペースが問題を引き起こすようなら 前の区切りもカンマにすれば ,2,3,16,17,25, LIKE '%,' & 数字 & ',%'
- CHRONOS_0
- ベストアンサー率54% (457/838)
>1のとき1と11が抽出されたんですが、 そんなはずありませんよ 1の時には"* 1,*" 11の時には"* 11,*" という文字列を比較することになります 同じじゃないことは明白ですよね >LIKE '% ' & 数字 & ',%' 前の%の後ろのスペースを抜かしているのでは
お礼
返信ありがとうございます. 半角スペース入っています. 色々試したのですが、スペース無視されている印象です. 正確にはAccess2003で作って、 ASPのADOを使って抽出しているのですが これが原因でしょうか? すいません。
お礼
ありがとうございます。 データやっぱりいじらないといけないんですね。 覚悟決めてやります。 でも、このやり方でも テストデータでやったところ、 1のとき1と11が抽出されたんですが、 やり方が悪いのでしょうか?