如何在SQL Server中用星号替换nvarchar字段中的所有11个连续数字

Jos*_*kbo 2 t-sql sql-server

我在视图上有一个textarea,它将输入保存在nvarchar(max)字段中.用户写了一个11位数字,这是他们不应该有的textarea敏感信息.我被要求用***********替换连续11个号码.

Sample Dataset

Id    Details
1     Id: 03948518231 
      ddk asd
2     ed 99 93482019393 ex

3     ehhdg g#3  85291293841 ldd
Run Code Online (Sandbox Code Playgroud)

更新后的结果:

Id    Details
1     Id: *********** 
      ddk asd
2     ed 99 *********** ex

3     ehhdg g#3  *********** ldd
Run Code Online (Sandbox Code Playgroud)

像这样的东西:

更新InfoTable SET Details = DetailsWithout11ConsecutiveNumbers

uzi*_*uzi 5

你可以使用stuffpatindex.但请注意,它将取代首次出现的11个连续数字

declare @InfoTable table (
    Details varchar(40)
)

insert into @InfoTable
values ('Id: 03948518231 ')
, ('ed 99 93482019393 ex')
, ('ehhdg g#3  85291293841 ldd')

update @InfoTable
set Details = stuff(Details, patindex('%[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]%', Details), 11, '***********')
where
    patindex('%[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]%', Details) > 0

select * from @InfoTable
Run Code Online (Sandbox Code Playgroud)