Substring() no SQL Server: Como usar com exemplos
⚡ Resumo Inteligente
SUBSTRING() no SQL Server extracts é uma porção de um caractere, texto ou expressão binária, retornando um número definido de caracteres a partir de uma posição inicial escolhida, e combina naturalmente com CHARINDEX para análise baseada em delimitadores.
O que é Substring()?
SUBSTRING() é uma função em SQL que permite ao usuário extrair uma substring de qualquer string fornecida, conforme necessário. Exemplo: SUBSTRING()tracA função SUBSTRING() em SQL retorna uma parte específica de uma string de comprimento especificado, a partir de uma determinada posição em uma string de entrada.
Sintaxe para Substring()
SUBSTRING(Expression, Starting Position, Total Length)
Aqui:
- A expressão SUBSTRING() em SQL Server Pode ser qualquer caractere, binário, texto ou imagem. A expressão é a string de origem da qual a substring é obtida.
- A posição inicial determina a posição na expressão a partir da qual a nova substring deve começar.
- O Comprimento Total é o comprimento total esperado da subcadeia resultante da Expressão, a partir da Posição Inicial.
Regras para usar SUBSTRING()
- Os três argumentos são obrigatórios na função SUBSTRING() do MS SQL.
- Se a posição inicial for maior que o número máximo de caracteres na expressão, a função SUBSTRING() do SQL Server não retornará nada.
- O comprimento total pode exceder o comprimento máximo de caracteres da string original. Nesse caso, a substring resultante será a string inteira, começando na posição inicial da expressão até o último caractere da expressão.
O diagrama abaixo ilustra o uso da função SUBSTRING() no SQL Server:
Exemplos de substring T-SQL
Pressuposto: Suponha que temos uma tabela chamada 'Guru99' com duas colunas e quatro linhas, conforme mostrado abaixo. Usaremos este 'GuruTabela 99' nos exemplos a seguir:
Consulta 1: SUBSTRING() em SQL com um comprimento menor que o comprimento máximo total da expressão.
SELECT Tutorial_name, SUBSTRING(Tutorial_name,1,2) As SUB from Guru99;
Resultado: O diagrama abaixo exibe a substring da coluna 'Tutorial_name' como a coluna 'SUB'. A posição inicial é 1 e o comprimento é 2, portanto, os dois primeiros caracteres são retornados:
Consulta 2: SUBSTRING() no SQL Server com um comprimento maior que o comprimento máximo total da expressão.
SELECT Tutorial_name, SUBSTRING(Tutorial_name,2,8) As SUB from Guru99;
Resultado: O diagrama abaixo exibe a substring da coluna 'Tutorial_name' como a coluna 'SUB'. Mesmo que o comprimento da substring seja maior que o comprimento máximo total da expressão, nenhum erro é gerado e a consulta retorna a string completa a partir da posição inicial:
SUBSTRING com CHARINDEX no SQL Server
Um uso muito comum da função SUBSTRING() no mundo real é para extrairtracO texto que se encontra antes ou depois de um delimitador, como o domínio em um endereço de e-mail. Por si só, a função SUBSTRING() precisa de uma posição inicial fixa, mas a posição de um delimitador varia de linha para linha. A função CHARINDEX() resolve isso retornando a posição de um caractere dentro de uma string:
CHARINDEX(substring_to_find, expression [, start_location])
Ao aninhar CHARINDEX() dentro de SUBSTRING(), a posição inicial torna-se dinâmica. O exemplo abaixo encontra o @ símbolo e retorna tudo o que vem depois dele. Um variável Contém o valor da amostra:
DECLARE @Email VARCHAR(50) = 'john.doe@guru99.com'; SELECT SUBSTRING(@Email, CHARINDEX('@', @Email) + 1, LEN(@Email)) AS Domain;
Aqui, CHARINDEX('@', @Email) localiza a posição do símbolo @, adicionando 1 move-se para a frente e SUBSTRING() então extracts os caracteres restantes. Para o valor acima, a consulta retorna o domínio. guru99. comEsse padrão CHARINDEX mais SUBSTRING é a maneira padrão de analisar strings estruturadas em T-SQL.
SUBSTRING vs LEFT e RIGHT no SQL Server
O SQL Server também fornece as funções LEFT() e RIGHT() para extrair caracteres do início ou do fim de uma string. Elas são mais curtas de escrever, mas estão limitadas às duas extremidades. SUBSTRING() é a mais flexível, pois pode começar em qualquer posição. A tabela abaixo compara as duas funções:
| função | Argumentos | Extracts de | SUBSTRING() equivalente |
| ESQUERDA(expressão, n) | 2 | Início da corda | SUBSTRING(expressão, 1, n) |
| DIREITA(expressão, n) | 2 | Fim da string | SUBSTRING(expressão, LEN(expressão) – n + 1, n) |
| SUBSTRING(expressão, início, comprimento) | 3 | Qualquer posição | Não aplicável |
Resumindo, LEFT() e RIGHT() são atalhos convenientes para as extremidades de uma string, enquanto SUBSTRING() lida com o caso geral, incluindo caracteres retirados do meio.
Argumentos negativos, zero e nulos em SUBSTRING
Além das regras básicas, é útil saber como a função SUBSTRING() se comporta nas extremidades. Quando a posição inicial é zero ou negativa, o SQL Server calcula um comprimento efetivo de (início + comprimento – 1) e começa a ler a partir da posição um. Quando qualquer argumento é NULL, o resultado também é NULL. A tabela abaixo foi verificada em relação à tabela oficial. SUBSTRING (Transact-SQL) A referência mostra estes casos:
| Ligar | Resultado | Razão |
| SUBSTRING('Guru99', 1, 4) | Guru | Chamada normal: quatro caracteres a partir da posição um. |
| SUBSTRING('Guru99', 0, 3) | Gu | Começando abaixo de um: o comprimento efetivo é 0 + 3 – 1 = 2. |
| SUBSTRING('Guru99', 4, 100) | u99 | Se o comprimento da string for maior que o valor retornado, o retorno é exibido sem erro. |
| SUBSTRING('Guru99', 3, NULO) | NULL | Um argumento NULL torna todo o resultado NULL. |
Conhecer esses casos extremos evita surpresas quando a posição inicial é calculada a partir de outra coluna ou de um variável que pode ser zero ou NULL.





