を追加するなど、テーブルの値を表示することは可能です「 - 」表示列の値
201602
201732
201853
希望する値があるべきとして例えば
たちが列値を持つ
2016-02
2017-32
2018-53
in sql
を追加するなど、テーブルの値を表示することは可能です「 - 」表示列の値
201602
201732
201853
希望する値があるべきとして例えば
たちが列値を持つ
2016-02
2017-32
2018-53
in sql
select substr(col,1,4)||'-'||substr(col,5) from my_table
カラムt ypeが数値の場合は、MOD演算子を使用できます。
クエリは次のようになります。
あなたはまた、4桁と2桁のパターンで値を分割して参照をバック使用して、値は常に正確に6桁の数字であると仮定すると、正規表現を使用することができselect int(col/100)||'-'||mod(col,100) from my_table
"INT":無効なID – user1213199
@ user1213199 - 'int()'の代わりに 'trunc()'を使います。 mod'dの値は0で埋められる必要があります。最初の値は '2016-2' –
with mytable (value) as (
select 201602 from dual
union all select 201732 from dual
union all select 201853 from dual
)
select value, regexp_replace(value, '(\d{4})(\d{2})', '\1-\2') as new_value
from mytable;
VALUE NEW_VALUE
---------- ------------------------------
201602 2016-02
201732 2017-32
201853 2018-53
を使用すると、多くのデータを効率的に使用できます。暗黙的に数値を文字列に変換しています。それを明示的に行うことは本当に必要ではないが、明確にするために望ましいかもしれない。
より長い値を使用できる場合、これは4番目の文字の後にダッシュを入れるため、1234567は1234-567と表示されます。最後の2桁を常に区切りたい場合は、代わりに$
アンカーを使用してパターン'(\d{4})(\d{2})$'
を使用できます。あなたが最初のグループのサイズを省略することができます短い値に対処するには:
with mytable (value) as (
select 201602 from dual
union all select 201732 from dual
union all select 201853 from dual
union all select 12 from dual
union all select 123 from dual
union all select 1234 from dual
union all select 1234567 from dual
)
select value, regexp_replace(value, '(\d+)(\d{2})$', '\1-\2') as new_value
from mytable;
VALUE NEW_VALUE
---------- ------------------------------
201602 2016-02
201732 2017-32
201853 2018-53
12 12
123 1-23
1234 12-34
1234567 12345-67
使用演算子' || '
この連結あなたの選択。
例:
SELECT 'TEST' || '-' || 'MY' || '-' || 'QUERY' FROM DUAL;
CONCAT(string_value1、string_value2 [、string_valueN])
は、より多くのを参照してください。https://msdn.microsoft.com/pt-br/library/hh231515.aspx
データは常にすることができます同じ形式を持っている場合部分文字列と連結を結合します。 – jarlh
ようこそスタックオーバーフロー。 [コードサンプル '{}'](https://i.imgur.com/3ppJhiE.png)ツールバーのボタンでソースコードを書式設定することができます。今回はあなたのために行いました。 –
これは文字列か数字ですか? – dnoeth