Более эффективный способ выбрать количество возникновений в строке

Привет всем У меня есть следующий скрипт, который все хорошо, и DANDY и делает работу, однако я не думаю, что это очень приятно или эффективно. Просто удивляюсь, есть ли лучший и более эффективный способ сделать то же самое? Работа состоит в том, чтобы рассчитать количество вхождений чисел в рядах ряда, а затем выберите общую сумму. Так, например, с числом «014812000», ожидаемый результат должен быть 6, поскольку у нас есть 4 х 0 вхождений и 2 х 1 вхождения. Мы только обеспокоены вхождениями более 1. Просто добавить это, использует в функции определенной пользователем.

DECLARE @Number nvarchar(50)
SET @Number = '014812000'

DECLARE @count0 int
DECLARE @count1 int
DECLARE @count2 int
DECLARE @count3 int
DECLARE @count4 int
DECLARE @count5 int
DECLARE @count6 int
DECLARE @count7 int
DECLARE @count8 int
DECLARE @count9 int

DECLARE @countTotal int
SET @countTotal = 0

SET @count0 = LEN(@Number) - LEN(REPLACE(@Number, '0', '')) 
SET @count1 = LEN(@Number) - LEN(REPLACE(@Number, '1', '')) 
SET @count2 = LEN(@Number) - LEN(REPLACE(@Number, '2', '')) 
SET @count3 = LEN(@Number) - LEN(REPLACE(@Number, '3', '')) 
SET @count4 = LEN(@Number) - LEN(REPLACE(@Number, '4', '')) 
SET @count5 = LEN(@Number) - LEN(REPLACE(@Number, '5', '')) 
SET @count6 = LEN(@Number) - LEN(REPLACE(@Number, '6', '')) 
SET @count7 = LEN(@Number) - LEN(REPLACE(@Number, '7', '')) 
SET @count8 = LEN(@Number) - LEN(REPLACE(@Number, '8', '')) 
SET @count9 = LEN(@Number) - LEN(REPLACE(@Number, '9', '')) 

IF @count0 > 1
    BEGIN
        SET @countTotal = @countTotal + @count0
    END
IF @count1 > 1
    BEGIN
        SET @countTotal = @countTotal + @count1
    END
IF @count2 > 1
    BEGIN
        SET @countTotal = @countTotal + @count2
    END
IF @count3 > 1
    BEGIN
        SET @countTotal = @countTotal + @count3
    END
IF @count4 > 1
    BEGIN
        SET @countTotal = @countTotal + @count4
    END
IF @count5 > 1
    BEGIN
        SET @countTotal = @countTotal + @count5
    END
IF @count6 > 1
    BEGIN
        SET @countTotal = @countTotal + @count6
    END
IF @count7 > 1
    BEGIN
        SET @countTotal = @countTotal + @count7
    END
IF @count8 > 1
    BEGIN
        SET @countTotal = @countTotal + @count8
    END
IF @count9 > 1
    BEGIN
        SET @countTotal = @countTotal + @count9
    END

SELECT @countTotal
0
задан Vince Ashby-Smith 12 September 2011 в 09:53
поделиться