
こんにちは。
現在Oracle8.1.7.4でSUBSTR関数を使っているのですが、
私の考えだと、下のSQLを実行すると、'123456'が戻ると思っていたのですが、
'012345'が戻ってきますこれはどういうことでしょうか?
SELECT SUBSTR(TO_CHAR('1234567','00000000'),2,6) FROM DUAL;
SUBSTR(TO_CHAR('12
------------------
012345
と表示されてしまいます。
これを、
SELECT SUBSTR(TO_CHAR('1234567','00000000'),3,6) FROM DUAL;
に変更すると、
SUBSTR(TO_CHAR('12
------------------
123456
という欲しい答えが得られます。
これはどういうことなんでしょうか?
全然わかりません。
どなたか分かる方がいらっしゃいましたら、ご回答願います。
よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
こんにちわ。
先頭の空白って、符号の領域じゃないでしょうか?
select substr(to_char('1234567', 'FM09999999'), 2, 6) from dual;
とすると、以下のようになりました。
SUBSTR(TO_CHAR('12
------------------
123456
No.3
- 回答日時:
#1です~
> FMを指定しない時の左の空白一文字は、負値のマイナス記号用のスペースです。
> 負の値をTMP_TBLに入れてSELECTすると、左に空白一文字が付与されません。
そんなことがあったんですねぇ、、、
符号のスペースなんていらないですけど、、、
#2さん、お勉強になりました。
ありがとうございました。
参考URL:http://tsubosak.hp.infoseek.co.jp/2-10/7-column. …
No.1
- 回答日時:
こんにちは。
Oracle9.2.0.1でテストしました。
同様の現象が再現しました。
SUBSTR(TO_CHAR('12
------------------
012345
↑
このサイトでは半角の空白が削除されますが
一番左に空白がありましたよね?
なぜか、一番左に空白が入るみたいです。
ですので、結論としてはTRIMをかけてからSUBSTRすれば、希望の値が取得できます。
SQLは以下の通りになります。
SELECT SUBSTR(TRIM(TO_CHAR('1234567','00000000')),2,6) FROM DUAL;
んーTO_CHAR関数のバグなんですかねぇ、、、
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP substrの使い方について教えて下さい。 4 2023/02/17 15:59
- PHP Q&Aサイトを作成していてURLの生成方法について迷っているのでアドバイスお願い致します 1 2023/08/10 16:42
- Perl perlについての質問 2 2022/10/17 15:25
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- MySQL SQLについて質問です。 SELECT TO_CHAR(TO_DATE('90-10-08.'YY- 4 2022/05/13 20:55
- TOEFL・TOEIC・英語検定 英検3級のライティングに関して質問があります。 定型パターンを何個か覚えておこうと考え下記を見つけま 6 2022/08/28 06:20
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- PostgreSQL 数値が定期的にあらわれる文字列から、いくつめに出現した数値が指定して切り出したい 1 2023/06/08 13:12
- PHP PHP MySql ページング 2 2022/09/20 06:38
- C言語・C++・C# const char** p;のとき、free(p)でC4090エラーとなるのはなぜですか 3 2023/03/31 16:28
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
あいまい検索で英文字の全角半...
-
スペースを検索したい
-
顧客データベースを作る場合、...
-
select文のwhere句に配列を入れ...
-
SQLServer2005のストアドプロシ...
-
WHERE条件の最終桁のスペースに...
-
ストアドの戻り値で配列を返す方法
-
INSERT文などの列名などの半角...
-
差し込み後、元データを変更し...
-
フィルターかけた後、重複を除...
-
エクセルの関数について教えて...
-
ExcelVBAで「Shift_JIS(MS932)...
-
INSERT文でフィールドの1つだ...
-
列番号による項目の取得について
-
SQLで特定の項目の重複のみを排...
-
Oracleのデータ型、NUMBERについて
-
カーソル0件の時にエラーを発生...
-
SQLで列名を変数にできないでし...
-
EXISTSを使ったDELETE文
-
エクセルで最後の文字だけ置き...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
スペースを検索したい
-
あいまい検索で英文字の全角半...
-
末尾の全角スペースの削除
-
顧客データベースを作る場合、...
-
ストアドの戻り値で配列を返す方法
-
select文のwhere句に配列を入れ...
-
SQLServer2005のストアドプロシ...
-
WHERE条件の最終桁のスペースに...
-
MYSQL 右埋め 半角スペース
-
外部結合で取得した項目にNVL関数
-
SQL SERVER 2005 にて全テーブ...
-
管理工学研究所のデーターベー...
-
Oracleのスペース文字について。
-
INSERT文などの列名などの半角...
-
SUBSTR関数の結果が予想と異なる
-
ORACLEの「DECODE」と同じ意味...
-
Trimの使い方
-
1つのテキストボックスに入力...
-
DTSパッケージについて
-
簡単なクエリーの高速化
おすすめ情報