Это может решить вашу проблему, даже если число не является числовым, оно может подсчитать любое вхождение символов, если существует более 1 идентичного символа.
Это было сделано для таблицы символов.
declare @t table(number nvarchar(max))
insert @t values ('014812000')
insert @t values ('0148120001')
insert @t values ('0148120001aa')
;with a as
(
select number n, 0 i from @t
union all
select replace(n, cast(n as char(1)), ''),
case when replace(n, cast(n as char(1)), '') = stuff(n,1,1,'') then i else
i + cast(len(n) - len(replace(n, cast(n as char(1)), '')) as int)
end
from a
where n <> ''
)
select i from a where n = ''
Если вы хотите использовать только одно конкретное число, вот как вы можете его использовать:
declare @Number nvarchar(max)
set @Number = '014812000'
;with a as
(
select @number n, 0 i
union all
select replace(n, cast(n as char(1)), ''),
case when replace(n, cast(n as char(1)), '') = stuff(n,1,1,'') then i else
i + cast(len(n) - len(replace(n, cast(n as char(1)), '')) as int)
end
from a
where n <> ''
)
select i from a where n = ''