Sql 替换字符串中特定位置的特定字符
我正在使用Oracle SQL Developer。源表中有一列,Sql 替换字符串中特定位置的特定字符,sql,database,Sql,Database,我正在使用Oracle SQL Developer。源表中有一列,fiscal\u week\u string,格式如下: 2011-01(09/27-10/31) 我想将其转换为以下格式: 2011-01(09/27至10/31) 也就是说,我想删除一些空白。我还想将大括号内的“-”替换为“到”” 以下是几行: datestr pc周\u开始周\u结束月\u开始月\u结束年mth qtr工作周\u周\u字符串财政月\u字符串 2010-09-27 14879 2010-09-27
fiscal\u week\u string
,格式如下:
2011-01(09/27-10/31)
我想将其转换为以下格式:
2011-01(09/27至10/31)
也就是说,我想删除一些空白。我还想将大括号内的“-
”替换为“到”
”
以下是几行:
datestr pc周\u开始周\u结束月\u开始月\u结束年mth qtr工作周\u周\u字符串财政月\u字符串
2010-09-27 14879 2010-09-27 2010-10-03 2010-09-27 2010-10-31 2011 1 1 1 2011 – 01 (09/27 – 10/03) 2011 – 01 (09/27 – 10/31)
2010-09-28 14880 2010-09-27 2010-10-03 2010-09-27 2010-10-31 2011-11-2011-01(09/27-10/03)2011-01(09/27-10/31)
有人能给我介绍一下吗?您可以使用regexp\u replace替换目标模式
DECLARE @str varchar(50)='2011 – 01 (09/27 – 10/31)'
SELECT REPLACE(SUBSTRING(@str, 0,CHARINDEX('(',@str)),' ','')+' '+ REPLACE(SUBSTRING(@str,CHARINDEX('(',@str),len(@str)),'–','to')
例如:
select regexp_replace(
regexp_replace('2011 - 01 (09/27 - 10/31)',' - ','-',1,1)
, ' - ',' to ') from dual;
更新示例:
create table a1(id number, name varchar2(100));
insert into a1 values(1, '2011 - 01 (09/27 - 10/31)');
update a1 set name=
regexp_replace(regexp_replace(name,' - ','-',1,1), ' - ',' to ') where id=1;
select * from a1;
由于您尚未共享DDL,因此需要如下所示的DDL
create table table_one
(
fiscal_week_string varchar(30)
);
insert into table_one
values ('2011 – 01 (09/27 – 10/31)');
insert into table_one
values ('2011 – 01 (09/26 – 11/31)');
您的Oracle查询将是
select col_one || col_two || col_three || ' ' || col_four||' '|| 'to'||' '||col_six as fmt_date
from
(
select REGEXP_SUBSTR(t.fiscal_week_string, '[^ ]+', 1, 1) col_one,
REGEXP_SUBSTR(t.fiscal_week_string, '[^ ]+', 1, 2) col_two,
REGEXP_SUBSTR(t.fiscal_week_string, '[^ ]+', 1, 3) col_three,
REGEXP_SUBSTR(t.fiscal_week_string, '[^ ]+', 1, 4) col_four,
REGEXP_SUBSTR(t.fiscal_week_string, '[^ ]+', 1, 5) col_five,
REGEXP_SUBSTR(t.fiscal_week_string, '[^ ]+', 1, 6) col_six
from table_one t
)
及
导致
2011–01 (09/27 to 10/31)
2011–01 (09/26 to 11/31)
SQL FIDLE您使用的是哪一个数据库?您只想在选择查询中进行查询,还是想在表中进行更新?@Luftwaffe Im使用Oracle SQL Developer@Sush我想更新表。请提供一个小的复制:一些DDL来创建示例表,以及一些示例数据。此外,请告诉我们到目前为止您做了哪些尝试和研究。有很多方法可以解决这个问题,了解你的具体处境会有帮助(另外:看到你付出的努力会让别人更愿意帮助你)。德国劳埃德船级社!