• ベストアンサー

ORACLEでLONG項目からCHAR項目へ桁数指定で文字列を抽出

ORACLEでLONG項目からCHAR項目へ桁数指定で文字列を抽出したいのですが、方法はありますか? LONG項目の先頭から30桁分の文字を抽出し、CHAR項目に入力したいのですが。 会社で使用しているERPパッケージでLONG項目があり、どうしてもこの項目から文字が抽出したいのです。 回答のほど宜しくお願いします。

  • mrx-3
  • お礼率42% (3/7)

質問者が選んだベストアンサー

  • ベストアンサー
  • fuzy
  • ベストアンサー率19% (4/21)
回答No.2

ちょっと質問の意図がわからないのですが、 例えば、T1,T2の2つのテーブルがあったとして、 T1のnumというnumber(10)の項目があって、その中から 先頭の5桁を取ってきて、T2のcommentというCHAR(5)の 項目に転送するなら、 まず、T1のnumから5文字取ってきて、それを変数hoge[chr(5)]に入れる。 select substrb(to_char(num),1,5) into hoge from t1 where id=1; それから、hogeをT2のcomment列に挿入する。 insert into t2(id,comment) values (1,hoge); んで、最後にcommitしたらOKです。 こんなもんでよかったでしょうか?

mrx-3
質問者

お礼

なるほど!ようやく分かりました! 俺って最悪に頭わるいっすね。 ありがとうございました。

その他の回答 (1)

  • fuzy
  • ベストアンサー率19% (4/21)
回答No.1

変数名をhogeとする。 substrb(to_char(hoge),1,30) これで先頭から30byteの文字列を取り出しできます。

mrx-3
質問者

補足

もう少し教えて頂きたいのですが、 今、GEMというテーブルがあります。 テーブルの項目定義は下記の様になっています。 <項目定義> GEM_ID RAW(8) NOT NULL, GEM_SEQ NUMBER(10) NOT NULL, GEM_DATA LONG, SELECT文を普通に書くと、 SELECT SUBSTRB(GEM_DATA,1,30) FROM GEM となりますよね。 で、hogeをこれに組み込もうとした場合はどうすれば良いのでしょうか。 本当に初心者ですみません。宜しくお願いします。

関連するQ&A

  • 特定の桁数を抽出

    教えてください。 エクセルのVBAで、 特定の桁数を抽出するにはどうすれば、よいでしょうか。 イメージは、添付ファイルのC列のようなVBAを作りたい、 と考えています。 条件としては、 (1)先頭~10桁までを抽出 (2)それ以降は削除 (3)文字列にする、 です。 使用ソフトは、EXCEL2010です。 よろしくお願いします。

  • 指定した文字列が抽出できる関数

    Excelで、指定した文字列だけを抽出表示する場合、「文字列を先頭(左)から抽出する」などの関数は「LEFT関数」や「RIGHT関数」がありますが、位置の指定ではなく、文字列の中にある、特定の文字だけを指定して抽出してできる関数は何でしょうか? たとえば「ラーメン」「うどん」「そば」いずれかを「含む」文字列が入っているセルの中から、「うどん」のセルだけを抽出して表示するという場合です。

  • VBA エクセル 文字列の桁数指定 先頭に"0"

    お世話になります。 セルに入力されたコードが、指定された桁数未満であった場合に、足りない桁数分を調整するため先頭に"0"ゼロを追加したいと思っております。 具体的には、10桁に指定されたコード番号を、間違えて6桁で入力した場合、先頭に"0000"を追加して10桁に調整したいのです。 (1)誤:54321Q ↓調整 (2)正:000054321Q 入力したら瞬時に修正をさせたいので、WorksheetにChengeEventを利用して書こうと思っているのですが、下記のとおり入力された桁数が1~9桁であった場合のそれぞれの指定を書くことしか思いつかなくて。 もう少し、Simpleな書き方はないものでしょうか? ~前略~ s = Cells(Target.Row, Target.Column).Value If s = "" Then Exit Sub End If i = Len(s) If i > 10 Then MsgBox "顧客番号(ICRIS#)は10桁です。" Exit Sub ElseIf i = 1 Then Cells(Target.Row, Target.Column).Value = "000000000" & s exitsub ElseIf i = 2 Then Cells(Target.Row, Target.Column).Value = "00000000" & s exitsub ~省略~ よろしくご指導くださいませ。

  • 文字列を指定桁数で分割して配列に入れたい。

    文字列を指定桁数で分割して配列に入れたい。 Splitは指定した文字毎に分割して配列に入れてくれますが、 これを指定した桁数で区切って配列に入れたいのですが、 どうすればいいでしょうか? 環境はVisual Studio 2005でVBを使っています。

  • エクセル2003で数値を文字列に

    Windowsのエクセル2003です。 すでに入力されている文字列13桁以上を 文字列に変換できないでしょうか? 入力していくうちに先頭に0が必要な場合も出てきて 困っています。桁数はまちまちなので書式設定でも出来そうにありません。VALUEやTEXTもうまくいきません。 書式で文字列にしても文字化けしてしまいます。 何かいい方法はございませんか?

  • 特定文字列の抽出

    VB6の質問です。 桁数、データが不定の文字列中から特定文字を抽出したいのでが、方法を教えていただけないでしょうか? 抽出したいデータの桁数が毎回不定でMid, Left, Right関数が使用できません。 Dim Buffer As String Buffer = "A12345...B678910.TRAGET..C" '桁数、データが不定の文字列がBufferに入ります。 例えば、変数Bufferから、桁数を考慮しないで"TARGET"の文字列を抽出したのです。 InStr関数で、位置を特定して、Mid関数などで抽出するれば、良いと思うのですが これをどんな桁数のときも対応できるようにルーチン化にできないでしょうか?

  • Excelの数字の文字列入力で

    Excel2003です。 セルに   "651,652,653" のような3ケタ分の数字とカンマの文字列を入力しようとすると    651652653 という数値にみなされてしまいます。 入力するときに、文字列の先頭に ’ を付けると文字列に みなしてもらえるのですが、つい忘れてしまい面倒です。 セルに指定などで設定する方法は何かありますでしょうか。 よろしくお願いします。

  • Excelにて任意の位置の文字列を抽出したい

    Excelにて任意の位置の文字列を抽出したい セルA1に、あたい1(837,1077,132) セルA2に、あたい2(657,100,32) セルA3に、あたい3(20,10000,888) のような値が入っています。 ここから、132、32、888を取り出したいのですが、どのような式を入れたら良いでしょうか? Right関数だと上記のように桁数が2桁と3桁と混在している場合に抽出できませんでした。

  • 文字列

    ・文字列をキーボードから入力する関数を作成する。 書式:char *StrInp(char *pDefStr, int nLen); 引数:char *pDefStf; 初期文字列 int nLen; 入力可能文字数(1~79) 戻り値:正常ならば、入力した文字列の先頭ポインタ、エラー時はNULL。 処理:pDefStrに与えた文字列を初期値とする文字入力を行う。    nLenで指定した文字数まで入力可能とし、その範囲は1~79    までする。入力時の初期カーソル位置は与えた文字列の最後    になります。初期文字列が必要ない場合はヌル文字を与えます。    初期文字列を与えられた場合は、その文字列も更新可能とする。   ・入力の終了は「リターン」キーとする。   ・「BS」キーを押すと、カーソルの1文字前の文字前の文字を    消去する。 という、問いです。難しくてわかりません。どなたかたすけてください。        

  • ORACLEでNCHAR/CHARの違い

    ORACLEでNCHAR/CHARの違いについて教えて下さい。 文字列の記述に以下の2つの書きかたがありますが、 1.NCHAR(40) 2.CHAR(40 CHAR) これらにはどのような違いがあり、どう使い分けると良いでしょうか? よろしくお願い致します。 以上