• 締切済み

SQL文(FORMAT)を教えてください

表: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文を教えてください

みんなの回答

  • Mizyu
  • ベストアンサー率41% (245/593)
回答No.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がいじれる環境にいないので、曖昧ですが、この回答でご了承ください)

  • Mizyu
  • ベストアンサー率41% (245/593)
回答No.1

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関数は使えるか覚えていないので、 できなかったらすいませんが調べてみてください。)

nao0
質問者

補足

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