重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

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

表:TBL_LIST
 列1:TBL_LIST_DATA = ABCDE のデータ(VARCHAR2(5))
 列2:TBL_LIST_NO = 12345 のデータ(NUMBER(10))
があります

上記の列データの
 (1)列1の左から2文字
 (2)列1の右から3文字

 (3)列2の左から2文字
 (4)列2の右から3文字
をselectするSQL文を教えてください

A 回答 (2件)

SUBSTR関数は


SUBSTR(str, start, length)
という形式で
SUBSTR(TBL_LIST_DATA,1,2)となるとTBL_LIST_DATAの1文字目から2文字を切り出す関数です。
TO_CHAR関数は数値型などを文字列型に変換しますが、NUMBER(10)の場合は強引に10文字の文字列に変換してしまいます。
そのため
TO_CHAR(TBL_LIST_NO)
は12345□□□□□となります。(□は半角スペース)
それを踏まえて工夫してみてください。
ヒントを出すとTRIM関数というものがあります。これを調べてみてください。
(今、DBがいじれる環境にいないので、曖昧ですが、この回答でご了承ください)
    • good
    • 0

Oracleなら


(1) SELECT SUBSTR(TBL_LIST_DATA,1,2) FROM TBL_LIST
(2) SELECT SUBSTR(TBL_LIST_DATA,LENGTH(TBL_LIST_DATA)-2,3) FROM TBL_LIST
(3) SELECT SUBSTR(TO_CHAR(TBL_LIST_NO),1,2) FROM TBL_LIST
(4) SELECT SUBSTR(TO_CHAR(TBL_LIST_NO),LENGTH(TO_CHAR(TBL_LIST_DATA))-2,3) FROM TBL_LIST

SQLServerなら SUBSTR を SUBSTRING、 Accessなら SUBSTRを MID で実装可能。
(SQLServer,AccessでTO_CHAR関数、LENGTH関数は使えるか覚えていないので、
できなかったらすいませんが調べてみてください。)

この回答への補足

ありがとうございます
早速させて頂いたのですが・・・
 TBL_LIST_NO = 12345 のデータ(NUMBER(10))
と10桁の為、出来ませんでした
 申し訳御座いませんが、あと少しご教示頂けないでしょうか?
よろしくお願いいたします

補足日時:2003/11/18 16:26
    • good
    • 0

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

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