小编典典

用某些单词替换可变长度字符串

sql

给定以下字符串

Declare @string varchar(max)='abc ___________ deffns ___ cg _ hif _______hh ihs';

这是所需的输出:( 每个长号,无论长度如何,都应替换为姓氏)

abc lastname deffns lastname cg lastname hif lastname hh ihs

这里的问题是,可能有很多Hypens可变长度(最大长度可以<20)…

我尝试了 多种 方法,并采用了以下方法。

select 
REPLACE(REPLACE(replace(stringcol,replicate('_',20),'LASTNAME'),
replicate('_',19),'LASTNAME'),
replicate('_',18),'LASTNAME')
 from table

有没有办法有效地做到这一点..任何建议将是最欢迎的


阅读 159

收藏
2021-03-23

共1个答案

小编典典

首先删除多个下划线,然后进行替换。

这是一种方法:

select replace(replace(replace(@string, '_', '><'
                              ), '<>', ''
                      ), '><', 'LASTNAME'
              )
2021-03-23