とある文字列の10文字目から
一定数の文字列を抜き出すSQLを教えてください。
条件:どこまで抜き出すのか?
10文字目以降に/がある場合
→ 10文字目以降の/の手前まで(※10文字目手前にも/あり)
10文字目以降に/がない場合は
→ 10文字目以降最後まで
結果は1-5文字以内になる予定です。
よろしくお願いします。
試してないけどどうかな?
=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
試してないけどどうかな?
=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
すみません。。。
試し中ですが、バチッと正解が出ていません。
何かちょっと直せば欲しい値が出そうなので、
土日にじっくりやってからお返事いたします。
ちょっといじりなおした結果、
下記にて思い通りの結果を得ることができました。
IIf(InStr(10,[列],"/")>=10,Mid([列],10,InStr(10,[列],"/")-10),Mid([列],10))
※ちなみに10文字目に"/"があるパターンは存在せず、問題ありませんでした。
1号様、2号様、ありがとうございました。
また、別の問題が発生しておりますので、
検討してみて引き続き質問させて頂くかもしれません。
それまで締めずにおきますので、もしお時間ありましたら、お付き合い頂ければ幸いです。
accessなら mid と instrの組み合わせでしょうか。
iif (instr(10,文字列 , "/") > 0, mid(文字列,10, instr(10,文字列 , "/")-1 ,
mid(文字列,10, len(文字列)-10))
実際にテストしていないので動くかわかりませんが、こんな感じでしょうか。
この場合、10文字目が "/"だった場合に "/"が含まれてしましますので、そういうケースがある場合もう少し工夫が必要ですね。
また、質問の解釈も間違えているかもしれませんが、上記の組応用でいけるでしょう。
>10文字目が "/"だった場合
そこは僕も気になってる
質問者からのお返事待ちですね
>mid(文字列,10, instr(10,文字列 , "/")-1
Midの第三引数は文字位置ではなく文字数だから違うよね?
>mid(文字列,10, len(文字列)-10)
Midの第三引数を省略してるから-10不要ですよ
Midのマニュアルは上の回答見てね
すみません。
だいたいこんな感じで使えば解決できるんじゃないかと思い
調べもせず適当な回答してしまいましたm(__)m
すみません。。。
2013/08/30 19:25:53試し中ですが、バチッと正解が出ていません。
何かちょっと直せば欲しい値が出そうなので、
土日にじっくりやってからお返事いたします。
ちょっといじりなおした結果、
2013/08/31 22:24:02下記にて思い通りの結果を得ることができました。
IIf(InStr(10,[列],"/")>=10,Mid([列],10,InStr(10,[列],"/")-10),Mid([列],10))
※ちなみに10文字目に"/"があるパターンは存在せず、問題ありませんでした。
1号様、2号様、ありがとうございました。
また、別の問題が発生しておりますので、
検討してみて引き続き質問させて頂くかもしれません。
それまで締めずにおきますので、もしお時間ありましたら、お付き合い頂ければ幸いです。