No SQL Server, pode haver situações em que você precisa encontrar a primeira ocorrência de um caractere não numérico em uma string sem usar nenhuma função embutida. Este artigo irá guiá-lo através do processo de alcançar isso usando uma abordagem simples.
Cenário
Vamos considerar o seguinte cenário: temos uma string “577a” e queremos encontrar a primeira ocorrência de um caractere não numérico na string.
Abordagem
Aqui está a abordagem passo a passo para encontrar a primeira ocorrência de um caractere não numérico em uma string:
- Primeiro, precisamos determinar o número de registros na tabela.
- Em seguida, para cada registro, calculamos o comprimento da string usando um loop WHILE.
- Então, para cada registro individual, verificamos se cada caractere é numérico ou não numérico. Se encontrarmos um caractere não numérico, retornamos a posição atual como a primeira ocorrência. Caso contrário, incrementamos o contador em 1.
Vamos dar uma olhada no exemplo de código:
/* Primeira ocorrência de caractere em uma string usando variável de tabela */
/* Variável de tabela criada */
DECLARE @table1 TABLE (id INTEGER IDENTITY(1,1), name VARCHAR(5))
INSERT INTO @table1 VALUES ('911av'), ('1sdf'), ('aaaa')
/* Exibindo conteúdo da tabela */
SELECT * FROM @table1
/* Contar o número total de registros na tabela */
DECLARE @rcount INTEGER
SELECT @rcount = COUNT(name) FROM @table1
/* Declarar variável para o loop externo */
DECLARE @i_rcount INTEGER
SET @i_rcount = 1
/* Loop que será executado para cada registro */
DECLARE @srecord VARCHAR(10)
DECLARE @result1 VARCHAR(10)
DECLARE @x INTEGER
WHILE (@i_rcount <= @rcount)
BEGIN
/* Armazenar os registros individuais aqui */
SELECT @srecord = name FROM @table1 WHERE id = @i_rcount
SELECT @result1 = LEN(name) FROM @table1
SET @x = 1
/* Verificando cada caractere no registro */
WHILE (@x <= @result1)
BEGIN
IF (ISNUMERIC(LEFT(@srecord, @x))) <> 1
BEGIN
SELECT 'Primeira Ocorrência de caractere' + ' ' + 'na string:' + ' ' + ' ' + @srecord + ' ' + 'é' + ' ' + CAST(@x AS VARCHAR(3))
SET @x = @result1 + 1 /* Isso sairá do loop interno */
END
ELSE
SET @x = @x + 1
END
SET @i_rcount = @i_rcount + 1
END
Saída de Exemplo
A saída do código acima será:
Primeira Ocorrência de caractere na string: 911av é 4
Seguindo esta abordagem, você pode facilmente encontrar a primeira ocorrência de um caractere não numérico em uma string sem usar nenhuma função embutida no SQL Server.