- 締切済み
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文を教えてください
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- Mizyu
- ベストアンサー率41% (245/593)
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)
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桁の為、出来ませんでした 申し訳御座いませんが、あと少しご教示頂けないでしょうか? よろしくお願いいたします