Привет всем У меня есть следующий скрипт, который все хорошо, и 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