Published on

February 21, 2013

SQL Server: Encontrando a Primeira Ocorrência de um Caractere Não Numérico em uma String

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:

  1. Primeiro, precisamos determinar o número de registros na tabela.
  2. Em seguida, para cada registro, calculamos o comprimento da string usando um loop WHILE.
  3. 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.

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.