Banco de Dados - SQL Server

Manipulação de Strings com SQL Server 2008 R2

Neste artigo veremos as opções para utilização de funções específicas do SQL Server para manipulação de textos com exemplos, utilizando o banco de dados AdventureWorks.

por Carlos Andrioli



Hoje meu primeiro artigo sobre tecnologia vou mostrar como manipular textos com o SQL Server 2008 R2, pois até hoje eu não encontrei um site com bons exemplos sobre a manipulação e é algo realmente útil que sempre precisamos no dia a dia, nem sempre lembramos como funcionam corretamente ou como utilizar, por isso vou tentar hoje mostrar isso de forma objetiva para que todos possam entender e utilizar com maior facilidade.

Para quem não conhece o banco de dados AdventureWorks é utilizado como exemplo a muito tempo pela própria Microsoft, pode ser baixado nesse endereço http://msftdbprodsamples.codeplex.com/releases/view/55926. O AdventureWorks está disponível da versão 2000 do Microsoft SQL Server até as versões mais atuais sempre utilizando os padrões e funcionalidades atuais do Microsoft SQL Server, inclusive na versão do 2008 R2 ele já vem com exemplos de DW(Data Warehouse) e do Analysis Service o qual pretendo escrever alguns artigos futuramente para vocês. Resumindo, quem tem interesse em aprender sobre o Microsoft SQL Server com a “mão na massa”, baixe o esse Banco de Dados que ele tem um conteúdo bastante interessante.

Em todos os meus artigos pretendo utilizar o banco de exemplo AdventureWorks com os exemplos, então quem for ler e quiser acompanhar todos eles pode baixar e utilizar ele para ver melhor os exemplos em funcionamento.

Primeiro vamos falar das funções que vamos utilizar hoje durante o artigo depois demonstrarei de forma prática. o SQL Server 2008 R2 permite você trabalhar bastante com essas funções utilizando em querys, procedures ou user-functions.

Funções

Acredito que não vou conseguir especificar todas as funções acima nesse artigo por isso vou dividir esse artigo em duas partes, nesse artigo vou colocar as funções mais utilizadas e em breve publicarei um outro artigo contendo os Outras Funções.

LTRIM - Retorna os dados após limpar os espaço em branco do texto a esquerda.
Exemplo: Na query abaixo vou consultar a tabela Person.Contact incluindo o sobrenome do contato e mais um espaço de três caracteres no inicio.

SELECT TOP 10
   SPACE(3) + FirstName + SPACE(1) + LastName CompleteName
FROM
   Person.Contact
Ele irá retornar o seguinte resultado:



Após esse retorno vamos pegar o contato do “ Gustavo Achong” e vamos remover os espaços em branco dele utilizando a função LTRIM utilizando a seguinte query.
SELECT LTRIM('   Gustavo Achong')
Ele irá retornar o seguinte resultado:



Após ver o retorno pode reparar que os espaços do lado esquerdo foram removidos pela função LTRIM.

RTRIM - Retorna os dados após limpar os espaço em branco do texto a direita
Exemplo: Na query abaixo vou consultar a tabela Person.Contact incluindo o sobrenome do contato e mais um espaço de três caracteres no final.

SELECT TOP 10 
   FirstName + SPACE(1) + LastName + SPACE(3) CompleteName
FROM
  Person.Contact
Ele irá retornar o seguinte resultado:



Após esse retorno vamos pegar o contato do “Carla Adams ” e vamos remover os espaços em branco dele utilizando a função RTRIM utilizando a seguinte query.

SELECT RTRIM('Carla Adams   ')
Ele irá retornar o seguinte resultado:



Após ver o retorno pode reparar que os espaços do lado direito foi removido pela função RTRIM.

UPPER- Retorna os dados em caixa alta
Exemplo: Na query abaixo vou consultar a tabela Person.Contact.

SELECT TOP 10 
   UPPER(FirstName) FirstName
FROM 
   Person.Contact
Ele irá retornar o seguinte resultado:

SEM UPPER COM UPPER


LOWER - Retorna os dados em caixa baixa
Exemplo: Na query abaixo vou consultar a tabela Person.Contact.

SELECT TOP 10 
   LOWER(FirstName) FirstName
FROM 
   Person.Contact
Ele irá retornar o seguinte resultado:

SEM LOWER COM LOWER


LEN - Retorna a quantidade de caracteres do texto
Exemplo: Na query abaixo vou consultar a tabela Person.Contact retornando na coluna Qtde a quantidade de caracteres da coluna FirstName.

SELECT TOP 10
    LEN(FirstName) Qtde, FirstName
FROM
    Person.Contact
Ele irá retornar o seguinte resultado:



LEFT- Retorna o conteúdo do lado esquerdo do texto a partir da posição passada na função.
Exemplo: Na query abaixo vou consultar a tabela Person.Contact selecionando o lado esquerdo a partir do quarto caracter

SELECT TOP 10
    LEFT(FirstName, 4) FirstNameLeft
FROM
    Person.Contact
Ele irá retornar o seguinte resultado:

SEM LEFT COM LEFT


RIGHT - Retorna o conteúdo do lado direito do texto a partir da posição passada na função.
Exemplo: Na query abaixo vou consultar a tabela Person.Contact selecionando o lado direito a partir do quarto caracter.

SELECT TOP 10
    RIGHT(FirstName, 4) FirstNameRight
FROM
    Person.Contact
Ele irá retornar o seguinte resultado:

SEM RIGHT COM RIGHT


REPLACE - Substitui o string pelo o parâmetro desejado.
Exemplo: Na query abaixo vou substituir a palavra roupa por camisa.

SELECT
 REPLACE('O rato roeu a roupa do rei de roma', 'roupa', 'camisa')
Ele irá retornar o seguinte resultado:



SUBSTRING - Retorna uma parte do string passado como parâmetro, utilizando o string, o caracter inicial e o numero de caracteres que devem ser retornados.
Exemplo: Na query abaixo vou retirar a palavra roeu que está na posição 8 do texto e tem 4 caracteres.

SELECT
 SUBSTRING('O rato roeu a roupa do rei de roma', 8, 4)
Ele irá retornar o seguinte resultado:



Bom pessoal como falei para vocês no começo do post essas são as manipulações de texto mais utilizadas hoje no SQL Server, e espero que essas informações possam ser uteis para você, no próximo post vou publicar as outras funções manipulações de texto do SQL Server, porém por hoje é só pessoal.
Carlos Andrioli

Carlos Andrioli