匿名質問者

文字列を切り出すSQLを教えてください!


とある文字列の10文字目から
一定数の文字列を抜き出すSQLを教えてください。


条件:どこまで抜き出すのか?

10文字目以降に/がある場合
 → 10文字目以降の/の手前まで(※10文字目手前にも/あり)
10文字目以降に/がない場合は
 → 10文字目以降最後まで

結果は1-5文字以内になる予定です。

よろしくお願いします。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2013/09/04 09:42:45

ベストアンサー

匿名回答1号 No.1

試してないけどどうかな?

=Iif( InStr( 10, "文字列", "/" ) > 0, Mid( "文字列", 10, InStr( 10, "文字列", "/" ) - 10 ) , Mid( "文字列", 10 ) )

Iif
http://office.microsoft.com/ja-jp/access-help/HA001228853.aspx
InStr
http://office.microsoft.com/ja-jp/access-help/HA001228857.aspx
Mid
http://office.microsoft.com/ja-jp/access-help/HA001228881.aspx

匿名質問者

すみません。。。
試し中ですが、バチッと正解が出ていません。
何かちょっと直せば欲しい値が出そうなので、
土日にじっくりやってからお返事いたします。

2013/08/30 19:25:53
匿名質問者

ちょっといじりなおした結果、
下記にて思い通りの結果を得ることができました。

IIf(InStr(10,[列],"/")>=10,Mid([列],10,InStr(10,[列],"/")-10),Mid([列],10))

※ちなみに10文字目に"/"があるパターンは存在せず、問題ありませんでした。

1号様、2号様、ありがとうございました。

また、別の問題が発生しておりますので、
検討してみて引き続き質問させて頂くかもしれません。
それまで締めずにおきますので、もしお時間ありましたら、お付き合い頂ければ幸いです。

2013/08/31 22:24:02

その他の回答1件)

匿名回答1号 No.1

ここでベストアンサー

試してないけどどうかな?

=Iif( InStr( 10, "文字列", "/" ) > 0, Mid( "文字列", 10, InStr( 10, "文字列", "/" ) - 10 ) , Mid( "文字列", 10 ) )

Iif
http://office.microsoft.com/ja-jp/access-help/HA001228853.aspx
InStr
http://office.microsoft.com/ja-jp/access-help/HA001228857.aspx
Mid
http://office.microsoft.com/ja-jp/access-help/HA001228881.aspx

匿名質問者

すみません。。。
試し中ですが、バチッと正解が出ていません。
何かちょっと直せば欲しい値が出そうなので、
土日にじっくりやってからお返事いたします。

2013/08/30 19:25:53
匿名質問者

ちょっといじりなおした結果、
下記にて思い通りの結果を得ることができました。

IIf(InStr(10,[列],"/")>=10,Mid([列],10,InStr(10,[列],"/")-10),Mid([列],10))

※ちなみに10文字目に"/"があるパターンは存在せず、問題ありませんでした。

1号様、2号様、ありがとうございました。

また、別の問題が発生しておりますので、
検討してみて引き続き質問させて頂くかもしれません。
それまで締めずにおきますので、もしお時間ありましたら、お付き合い頂ければ幸いです。

2013/08/31 22:24:02
匿名回答2号 No.2

accessなら mid と instrの組み合わせでしょうか。

iif (instr(10,文字列 , "/") > 0, mid(文字列,10, instr(10,文字列 , "/")-1 ,
mid(文字列,10, len(文字列)-10))

実際にテストしていないので動くかわかりませんが、こんな感じでしょうか。
この場合、10文字目が "/"だった場合に "/"が含まれてしましますので、そういうケースがある場合もう少し工夫が必要ですね。
また、質問の解釈も間違えているかもしれませんが、上記の組応用でいけるでしょう。

他1件のコメントを見る
匿名回答1号

>10文字目が "/"だった場合
そこは僕も気になってる
質問者からのお返事待ちですね

>mid(文字列,10, instr(10,文字列 , "/")-1
Midの第三引数は文字位置ではなく文字数だから違うよね?

>mid(文字列,10, len(文字列)-10)
Midの第三引数を省略してるから-10不要ですよ

Midのマニュアルは上の回答見てね

2013/08/30 17:58:26
匿名回答2号

すみません。
だいたいこんな感じで使えば解決できるんじゃないかと思い
調べもせず適当な回答してしまいましたm(__)m

2013/08/30 18:07:55
  • 匿名回答1号
    匿名回答1号 2013/08/30 15:42:43
    使うデータベースによって関数の名前や使い方に違いがありますよ

    どのデータベースなのですか?

    あと、バージョンもね
  • 匿名質問者
    匿名質問者 2013/08/30 16:20:52
    失礼しました。
    Access2007でございます。

    どうぞよろしくお願いいたします。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません