電子書籍の厳選無料作品が豊富!

access2002でSQLで書いています。
とある文章のアタマとお尻をチョンぎって、真ん中だけ抜き出すようにしたいのですが

UPDATE [A表] SET [A表].F1 = Mid([F1],32);

UPDATE [A表] SET [A表].F1 = Left([F1],Len([F1])-20);

と2クエリになっています。これを1つにすることは可能ですか?出来るはずだとは思うのですが・・・。
OracleSilver10g所有者なんですけど5年以上やってないと基礎的なところまで
スッカリサッパリ忘れてしまっていて本当に歯がゆい感じで困ってます。
ちょっとやれば思い出せるだろうとナメていました。UPDATEすらgoogleに頼るまで忘れてました。

A 回答 (3件)

可能ですが、先頭32文字と末尾20文字を切り捨てるからには、


元のデータは必ず52文字以上あるんですかね?

UPDATE [A表] SET [A表].F1 = iif( len([F1]) > 52, mid([F1], 33, len([F1]) - 32 - 20), '');
F1列が52字を越えていれば途中を切り出し、52文字以下なら空文字をセットします。
ELSE部分は適宜変更してください。
    • good
    • 0
この回答へのお礼

ありがとうございます。頂いたSQLで問題なく変換可能でした。
実際はF1にはURL文字列を含むPHPの配列文字列が入りますので、

$hensuuA[0] = "<a href=\"http://yahoo.co.jp\" target=\"_blank\"
$hensuuA[1] = "<a href=\"http://google.co.jp\" target=\"_blank\"
$hensuuA[2] = "<a href=\"http://rakuten.co.jp\" target=\"_blank\"

という文字列がはいっています。この文字列からURL部分だけを抜き出したかったので
アタマ32文字、お尻20文字を切り捨てる必要がありました。

助かりました、ありがとうございました!

お礼日時:2013/12/16 17:33

> 早速実行してみましたところ、「パラメータの入力」なるダイヤログが出現し、


> A表.F1に行う処理の入力をもとめられました。どうやらそのままでは難しいようです。

サンプルを作成して試してみましたが、前回提示したSQLで問題なく実行されましたよ。
パラメータがでるということは、フィールド名が実際のものと違っていることですので、正しいかどうか確認してみてください。

> やりたい事はおっしゃるとおりで、フィールド上のデータのアタマ32文字と
> ケツ20文字を消してしまいたいというところです。

質問の、

UPDATE [A表] SET [A表].F1 = Mid([F1],32);

は、32文字目以降を取り出す、つまり、あたま31文字を削除するという動作になりますので、
それに合わせて回答しました。
    • good
    • 0
この回答へのお礼

こちらのSQLでも実行可能でした。ありがとうございました!

お礼日時:2013/12/16 17:34

前から 31文字目までと後ろから20文字目までを削除したいということでしょうか。



UPDATE [A表] SET [A表].F1 = Mid([F1],31+1,Len([F1])-31-20);

でどうでしょうか。

この回答への補足

ご回答ありがとうございます。
早速実行してみましたところ、「パラメータの入力」なるダイヤログが出現し、
A表.F1に行う処理の入力をもとめられました。どうやらそのままでは難しいようです。
ちなみにaccess2002環境です。

やりたい事はおっしゃるとおりで、フィールド上のデータのアタマ32文字と
ケツ20文字を消してしまいたいというところです。

補足日時:2013/12/12 23:36
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す