人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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


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

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

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

よろしくお願いします。



●質問者: 匿名質問者
●カテゴリ:インターネット ウェブ制作
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● 匿名回答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


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

匿名質問者さんのコメント
ちょっといじりなおした結果、 下記にて思い通りの結果を得ることができました。 IIf(InStr(10,[列],"/")>=10,Mid([列],10,InStr(10,[列],"/")-10),Mid([列],10)) ※ちなみに10文字目に"/"があるパターンは存在せず、問題ありませんでした。 1号様、2号様、ありがとうございました。 また、別の問題が発生しておりますので、 検討してみて引き続き質問させて頂くかもしれません。 それまで締めずにおきますので、もしお時間ありましたら、お付き合い頂ければ幸いです。

2 ● 匿名回答2号

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

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

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


匿名回答2号さんのコメント
すみません。編集している最中に、1号さんと重複したような回答になってしまいました

匿名回答1号さんのコメント
>10文字目が "/"だった場合 そこは僕も気になってる 質問者からのお返事待ちですね >mid(文字列,10, instr(10,文字列 , "/")-1 Midの第三引数は文字位置ではなく文字数だから違うよね? >mid(文字列,10, len(文字列)-10) Midの第三引数を省略してるから-10不要ですよ Midのマニュアルは上の回答見てね

匿名回答2号さんのコメント
すみません。 だいたいこんな感じで使えば解決できるんじゃないかと思い 調べもせず適当な回答してしまいましたm(__)m
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ