top of page

Strings no SQL Server

  • Foto do escritor: Amanda Nascimento
    Amanda Nascimento
  • 1 de jun.
  • 8 min de leitura

Strings são sequências de caracteres e no SQL Server, os tipos de dados mais comuns para armazenar strings são:


  • CHAR(n): armazena uma string de tamanho fixo.

  • VARCHAR(n): armazena uma string de tamanho variável.

  • TEXT: tipo antigo, usado para grandes volumes de texto (evite em novos projetos).

  • NVARCHAR(n): como o VARCHAR, mas suporta caracteres Unicode (ideal para dados multilíngues).



LEN()


LEN() – Retorna o número de caracteres (sem espaços no final)


💠 Exemplo 1

SELECT LEN('Amanda ') AS Tamanho; -- Retorna 6 (espaços à direita são ignorados)


💠 Exemplo 2

SELECT *

FROM psecao

WHERE LEN(codigo) = 33 AND SUBSTRING(codigo, 7, 4) = '0623';


💠 Exemplo 3 Retornar o tamanho de uma string com where

SELECT *

FROM psecao

WHERE LEN(codigo) = 33 AND SUBSTRING(codigo, 7, 4) = '0623';




LTRIM() e RTRIM()


LTRIM() e RTRIM() – Remove espaços à esquerda e à direita


SELECT LTRIM('   Amanda') AS SemEspacosEsquerda;

SELECT RTRIM('Amanda   ') AS SemEspacosDireita;



TRIM()


Remove espaços à esquerda e à direita (melhor que LTRIM + RTRIM).


SELECT TRIM('   amanda   ') AS Resultado;  -- 'amanda'



LEFT() e RIGHT()


LEFT() e RIGHT() – Captura os primeiros ou últimos caracteres


SELECT LEFT('Amanda Nascimento', 6) AS Nome;     -- "Amanda"

SELECT RIGHT('Amanda Nascimento', 10) AS Sobrenome; -- "Nascimento"




SUBSTRING()


SUBSTRING() – Extrai parte de uma string


💠 Exemplo 1

SELECT SUBSTRING('Amanda Nascimento', 8, 10) AS Parte; -- "Nascimento"


💠 Exemplo 2, extrair o DDD de um número de telefone:

-- Assumindo formato (35)99999-9999

SELECT SUBSTRING(telefone, 2, 2) AS DDD

FROM tabela_clientes;


💠 Exemplo 3

SELECT SUBSTRING('Olá, mundo!', 5, 5) AS Resultado;

 

💠 Exemplo 4

SELECT *

FROM psecao

WHERE LEN(codigo) = 33 AND SUBSTRING(codigo, 7, 4) = '0623';

 

💠 Exemplo 5

WHERE SUBSTRING(PFUNC.CODSECAO, 6, 6) = '.0623.'



CHARINDEX()


CHARINDEX() – Retorna a posição de uma substring


💠 Exemplo 1

SELECT CHARINDEX('Nas', 'Amanda Nascimento') AS Posicao; -- 8


💠 Exemplo 2 separar informações de uma string com delimitadores

-- Exemplo: "Consulta >> Procedimento >> Autorização"

SELECT

  LEFT(assunto, CHARINDEX('>>', assunto) - 1) AS Categoria1

FROM baseansnip;



REPLACE()


REPLACE() – Substitui parte da string


SELECT REPLACE('Amanda Nascimento', 'Nascimento', 'Silva') AS NovoNome;

-- Resultado: "Amanda Silva"


💠 Exemplo 1

SELECT REPLACE('Olá, mundo!', 'mundo', 'amigo') AS Resultado;

 

💠 Exemplo 2

UPDATE tabela

SET coluna = REPLACE(coluna, 'valor_antigo', 'valor_novo')

WHERE condição;

 

💠 Exemplo 3

REPLACE(PFUNC.SALARIO, '.', ',') AS 'REMUNERACAO_MENSAL',



TRANSLATE()


Substitui vários caracteres ao mesmo tempo.


SELECT TRANSLATE('123-456', '123', 'abc') AS Resultado; -- 'abc-456'


UPPER() e LOWER()


UPPER() e LOWER() – Transforma em maiúsculas ou minúsculas


💠Exemplo 1

SELECT UPPER('amanda nascimento') AS Maiusculas; -- "AMANDA NASCIMENTO"

SELECT LOWER('AMANDA NASCIMENTO') AS Minusculas; -- "amanda nascimento"


💠Exemplo 2

-- Deixar todos os nomes com letras minúsculas

SELECT LOWER(nome_cliente) AS nome_normalizado

FROM vendas;


💠Exemplo 3

-- Criar uma URL personalizada com base no nome

SELECT LOWER(REPLACE('Amanda Nascimento', ' ', '-')) AS url_amigavel;

-- Resultado: "amanda-nascimento"


CAST()


Converte valores para outro tipo de dados de forma simples.


💠Exemplo 1

Converter número para texto

SELECT CAST(123 AS VARCHAR) AS Texto;

-- Resultado: '123'


💠Exemplo 2

Padronizar valores numéricos como texto com zeros à esquerda

SELECT RIGHT('00000' + CAST(123 AS VARCHAR), 5) AS CodigoFormatado;

-- Resultado: '00123'


💠Exemplo 3

Moeda


SELECT CAST(1234.56 AS MONEY) AS Valor;

-- Resultado: 1234.5600

 

SELECT FORMAT(CAST(1234.56 AS MONEY), 'N2', 'pt-BR') AS Valor;

-- Resultado: 1.234,56



CONVERT)


Semelhante ao CAST(), mas com mais controle sobre datas e formatação.


💠Exemplo 1

SELECT CONVERT(VARCHAR, GETDATE(), 103) AS DataFormatada;

-- Resultado: '01/06/2025' (formato dd/mm/yyyy com estilo 103)


Clique aqui para saber mais sobre datas no sql server!


💠Exemplo 2

Usando CONVERT() + manipulação de string (manual)


SELECT 'R$ ' + REPLACE(CONVERT(VARCHAR, CAST(1234.56 AS MONEY), 1), '.00', '') AS Valor;

-- Resultado: R$ 1,234.56 (em inglês, estilo 1)

 

SELECT 'R$ ' + REPLACE(REPLACE(CONVERT(VARCHAR, CAST(1234.56 AS MONEY), 1), ',', '#'), '.', ','), '#' , '.') AS Valor;

-- Resultado: R$ 1.234,56

 


FORMAT()


Oferece formatação personalizada, inclusive com separadores, moedas, cultura, etc.

Formata valores (números, datas) como texto.


⚠️ Atenção: FORMAT() é ótimo para exibição, mas não é recomendado para cálculos em grandes volumes de dados porque pode afetar a performance.


💠Exemplo 1

Formatando data

SELECT FORMAT(GETDATE(), 'dd/MM/yyyy') AS DataBR;

SELECT FORMAT(GETDATE(), 'dddd', 'pt-BR') AS DiaSemana;

Formatando data e hora

SELECT FORMAT(GETDATE(), 'dd/MM/yyyy HH:mm') AS DataHora;

-- Resultado: '01/06/2025 14:45'


Para saber mais sobre datas no SQL Server, clique aqui


💠Exemplo 2

SELECT FORMAT(1234567.89, 'N2') AS ValorFormatado;

-- Resultado: '1,234,567.89'


SELECT FORMAT(1234567.89, 'N2', 'pt-BR') AS ValorBR;

-- Resultado: 1.234.567,89

 

SELECT FORMAT(1234567.89, 'N2', 'en-US') AS ValorUS;

-- Resultado: 1,234,567.89

 


💠Exemplo 3

Formatando moeda


SELECT FORMAT(1234.56, 'C', 'pt-BR') AS ValorFormatado;

-- Resultado: R$ 1.234,56

 

SELECT FORMAT(1000000, 'C', 'pt-BR') AS Valor;

-- Resultado: R$ 1.000.000,00

 

SELECT FORMAT(99.9, 'C2', 'pt-BR') AS Valor;

-- Resultado: R$ 99,90


  • 'C' = currency (moeda)

  • 'pt-BR' = cultura brasileira (usa vírgula como separador decimal e ponto para milhar)


💠Exemplo 4

Formatação percentual. O valor é multiplicado por 100 automaticamente e o símbolo de % é adicionado.


SELECT FORMAT(0.125, 'P2') AS Percentual;       -- '12.50 %'


  • P = Percentual (Percentage)

  • 2 = Número de casas decimais


SELECT FORMAT(0.125, 'P0') AS P0;  -- '13 %'

SELECT FORMAT(0.125, 'P1') AS P1;  -- '12.5 %'

SELECT FORMAT(0.125, 'P3') AS P3;  -- '12.500 %'


💠Exemplo 5 Número fixo com casas decimais. Diferente de 'N2', esse formato não adiciona separador de milhar.

SELECT FORMAT(1234.56, 'F2') AS Fixo;

-- Resultado: '1234.56'


  • F = Fixed-point (número fixo)

  • 2 = Duas casas decimais


💠Exemplo 6

Dígitos com zeros à esquerda

SELECT FORMAT(45, 'D4') AS Digitos;             -- '0045'


  • D = Decimal (inteiros)

  • 4 = Total de dígitos desejado


Código

Significado

Exemplo com 1234567.89

Explicação

'N2'

Número com 2 casas decimais

'1,234,567.89'

Milhar com vírgula e 2 casas decimais

'N0'

Número sem casas decimais

'1,234,568'

Arredonda para inteiro

'C'

Moeda com 2 casas (depende da cultura)

'R$ 1.234.567,89' (com pt-BR)

Mostra como valor monetário

'C0'

Moeda sem casas decimais

'R$ 1.234.568'

Arredonda valor monetário

'P'

Porcentagem com 2 casas

'123.456.789,00 %'

Multiplica por 100 e adiciona %

'P0'

Porcentagem sem casas

'123.456.789 %'

Igual acima, mas sem casas decimais

'D5'

Dígito com padding (inteiros)

'00123'

Preenche com zeros à esquerda (5 dígitos)

'E'

Notação científica

'1.234568E+006'

Científico (pouco usado em relatórios)

'F2'

Número fixo com 2 casas decimais

'1234567.89'

Sem separador de milhar

'G'

General (sem formatação fixa)

'1234567.89'

Simples, apenas o número

'X'

Hexadecimal (inteiros)

'7B' (para 123)

Muito usado com IDs, etc.




CONCAT()


Concatena (junta) duas ou mais strings, mesmo com NULL.

CONCAT() ou + para forçar string


SELECT CONCAT('Amanda', ' ', 'Nascimento') AS NomeCompleto;


Ao usar + ou CONCAT() com uma string, o SQL Server converte automaticamente os outros valores


SELECT 'A data é: ' + CAST(GETDATE() AS VARCHAR) AS Frase;

 

SELECT CONCAT('ID: ', 123, ', Nome: ', 'Amanda') AS Resultado;

-- Resultado: 'ID: 123, Nome: Amanda'



STR()


Converte número em string com formatação

 

SELECT STR(1234.5678, 10, 2) AS NumeroFormatado;

-- Resultado: '   1234.57' (com espaços à esquerda)


  • O primeiro argumento é o número

  • O segundo é o total de caracteres

  • O terceiro é o número de casas decimais


STRING_AGG()


Agrupa várias strings em uma só, com separador.


SELECT STRING_AGG(nome, ', ') AS nomes

FROM tabela_clientes;



REPLICATED()

Repete uma string n vezes.


SELECT REPLICATE('-', 10) AS LinhaSeparadora;  -- ----------



SPACE()


Gera espaços em branco.


SELECT 'Amanda' + SPACE(5) + 'Nascimento' AS Espacado;



PATINDEX()


Retorna a posição de um padrão (com wildcards).


SELECT PATINDEX('%med%', 'Umed Brasil') AS Posicao;



QUOTENAME()


Adiciona colchetes ([ ]) ou aspas em torno de uma string (usado para proteger identificadores).


SELECT QUOTENAME('nome da tabela') AS Protegido; -- [nome da tabela]



STRING_SPLIT()


Divide uma string em partes com base em um delimitador.


SELECT value

FROM STRING_SPLIT('Amanda,Nascimento,Silva', ',');



UNICODE() e NCHAR()


Lida com códigos Unicode (caracteres especiais, emojis, etc.).


SELECT UNICODE('Á') AS CodigoUnicode;

SELECT NCHAR(193) AS Letra; -- Retorna 'Á'



STUFF()


A função STUFF insere uma string em outra, substituindo um número específico de caracteres a partir de uma posição definida.


💠Exemplo 1

SELECT STUFF(LOWER(nome), 1, 1, UPPER(SUBSTRING(nome, 1, 1))) AS Resultado

FROM tabela1;


Neste exemplo, a função STUFF é usada para substituir o primeiro caractere da string pela versão em maiúscula desse caractere. A função LOWER é usada para converter toda a string em minúsculas antes da substituição.


💠Exemplo 2

Remover os 3 primeiros caracteres:

SELECT STUFF('Amanda Nascimento', 1, 3, '') AS Resultado;

-- Resultado: "nda Nascimento"


💠Exemplo 3

Inserir um texto no meio de outro:

SELECT STUFF('Amanda Nascimento', 8, 0, ' da Silva') AS Resultado;

-- Resultado: "Amanda da Silva Nascimento"




Exemplos práticos



Extrair primeiro nome e sobrenome


SELECT 

  LEFT(nome, CHARINDEX(' ', nome) - 1) AS PrimeiroNome,

  SUBSTRING(nome, CHARINDEX(' ', nome) + 1, LEN(nome)) AS Sobrenome

FROM (

  SELECT 'Amanda Nascimento' AS nome

) AS exemplo;




Substituir acentos


SELECT 

    ID,    UPPER(REPLACE(REPLACE(REPLACE(RTRIM(NOME_CARGO), 'ç', 'c'), 'á', 'a'), 'é', 'e'))  AS NOME_CARGO,

    CODIGO_CARGO

FROM FUNCO;




Identificar se existe espaço após o último caractere


Contagem:

SELECT COUNT(*) as contagem

FROM pfuncao

WHERE RIGHT(nome, 1) = ' '

and INATIVA = '0'



Identificação:

SELECT nome

FROM pfuncao

WHERE RIGHT(nome, 1) = ' '

and INATIVA = '0'


Correção:

UPDATE PFUNCAO

SET pfuncao.nome = RTRIM(nome)


Posts recentes

Ver tudo
ORDER BY no SQL Server

Organizar os resultados de uma consulta é essencial para análise e apresentação dos dados. É aí que entra o ORDER BY. A cláusula ORDER...

 
 
Trabalhando com datas no SQL Server

O tratamento de datas é uma parte essencial do dia a dia de quem trabalha com banco de dados no SQL Server. Seja para filtrar registros...

 
 

© 2017-2025  Criado e desenvolvido por Amanda Nascimento

  • Discord
  • GitHub
  • youtube
  • LinkedIn Amanda
bottom of page