是否可以将表值显示为添加" - "
例如我们将列值作为
{
languageCount : [
{
language : 'javascript',
count : 3
}],
labelCount : [
{
label : 'new',
count : 1
},
{
label : 'old',
count : 2
}]
}
期望值应为
201602
201732
201853
在sql中
答案 0 :(得分:3)
select substr(col,1,4)||'-'||substr(col,5) from my_table
答案 1 :(得分:0)
如果列类型是数字,则可以使用MOD运算符。
查询将是:
select int(col/100)||'-'||mod(col,100) from my_table
答案 2 :(得分:0)
你也可以使用一个正则表达式,假设值总是正好六位数,用四位和两位数模式分割值,并使用后面的引用来重构它:
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
虽然使用substr可能会对很多数据更有效。您隐式将数字转换为包含两者的字符串;明确地做这件事并不是必要的,但为了清楚起见可能是可取的。
如果您可以使用更长的值,则总是将短划线放在第四个字符之后,因此1234567将显示为1234-567。如果您希望最后两位数字始终分开,则可以使用模式'(\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
答案 3 :(得分:0)
使用operator ' || '
这个concat你的选择;
示例:
SELECT 'TEST' || '-' || 'MY' || '-' || 'QUERY' FROM DUAL;
答案 4 :(得分:0)
CONCAT(string_value1,string_value2 [,string_valueN])