Vamos dar uns toques de SQL? X

Por Pedro Gaspar para o PPLWARE

Ao longo de 10 semana temos apresentado alguns conceitos e funções sobre a linguagem SQL (ver artigos relacionados). A discussão do tema por parte dos nossos leitores tem sido fantástica e a partilha de conhecimento e experiência de cada um tem contribuído para um melhor uso de determinadas funções.

Esta semana vamos aprofundar um pouco mais a manipulação de strings em SQL.sql_00

Para apresentar os exemplos vamos utilizar a nossa habitual tabela tbl_pplware com os seguintes dados:

sql_01

Por vezes é-nos útil manipular as strigs que queremos obter, seja separar os espaços, remover um determinado caracter que nos seja inútil, ou outra situação qualquer. A linguagem SQL tem algumas funções interessantes para manipulação de strings.

Função SUBSTRING_INDEX

Neste exemplo vamos utilizar a função SUBSTRING_INDEX
Esta função permite-nos dividir uma string em varias e selecionar apenas a parte que nos interessa.

Como usar?

SELECT SUBSTRING_INDEX(‘www.pplware.com’, ‘.’, -2)

Resultado

sql_02

Objectivo: Seleccionar o primeiro e ultimo nome de todas as pessoas

Query

SELECT SUBSTRING_INDEX( nome, ' ', 1 ) AS pnome, SUBSTRING_INDEX( nome, ' ', -1 ) AS unome FROM `tbl_pplware`

Resultado:

sql_03

Como podem verificar o Vítor tem o mesmo resultado tanto no pnome como no unome, isto deve-se ao facto de ele não ter ultimo nome, ou seja, o delimitador que neste caso é ‘ ’ (um espaço) não existe.

Função REPLACE

Imaginemos que necessitamos de substituir um carácter ou uma substring dentro de uma string, nesse caso vamos utilizar a função REPLACE

Sintaxe

SELECT REPLACE(‘string princial’, ‘string a procurar’, ‘string que ira substituir’)

Objectivo: Remover o espaço entre no nome das pessoas

Query

SELECT REPLACE( nome, ' ', '' )
FROM tbl_pplware

Resultado

sql_04

Função LOWER e UPPER

Por vezes necessitamos de obter os nossos resultados em letra pequena ou letra grande, nesse caso utilizamos as funções LOWER para converter a nossa string toda para letra pequena, ou a função UPPER para convertermos a string toda para letra grande

Objectivo: Converter o nome das pessoas todo para letra grande

Query:

SELECT UPPER( nome )
FROM `tbl_pplware`

Resultado

sql_05

Função CONCAT

E se necessitar-mos de unir strings ? Nesse caso utilizamos a função CONCAT.

Sintaxe

SELECT CONCAT(string1’, ‘string2, ‘string3)

Objectivo: Criar um email para as pessoas, sendo que no nome não poderão existir espaços e os mesmos serão substituídos por pontos, o nome será todo escrito em letra pequena e no fim sera adicionado a string @pplware.com

Query

SELECT CONCAT( REPLACE( LOWER( nome ) , ' ', '.' ) , '@pplware.com' ) AS email
FROM tbl_pplware

Resultado:

sql_06

Esta semana ficamos por aqui. Esperamos que tenham gostado do tema do artigo de hoje e no caso de conhecerem mais funções não se esqueçam de partilhar connosco. Bom fim de semana!

  
     Pin It  

Arquivado na categoria: Tutoriais


9 Comentários

  1. Boas :p

    Tenho uma duvida: nao ha uma funçao do genero contains?

    Seria algo bastante pratico a nivel de tratamento de string para fazer pesquisas.

  2. Como sempre o Pplware se destaca com mais este Vamos dar uns toques de SQL?
    se estivesse vindo antes, eu teria economizado alguns trocados com meu curso de SQL, pois este está se saindo mais proveitoso que o proprio curso.
    Abraço a todos!!!

  3. Muito bom o artigo! :)
    Apanhei um erro: “SELECT REPLACE(‘string princial’, ‘string a procurar’, ‘string que ira substituir’)”

    Não será Principal?

  4. Mais um bom artigo sobre SQL..

  5. boas explicaçoes exemplos muito uteis, quem sabe ais pra frente podia esplicar criaççao de triggers q se faz muito util, para não precisar executar tudo na aplicação cliente, deixando o maior processamento no servidor

  6. isto é mysql ou sql para sqlserver(da microsoft)?

  7. (MSSql)
    Só porque tive alguns problemas quando comparava strings entre duas bases de dados com collations diferentes. É útil e talvez um pouco de mais para o âmbito destes artigos mas aqui vai

    SELECT *
    FROM Tabela1 INNER JOIN Tabela2
    WHERE Tabela1.Campo COLLATE DATABASE_DEFAULT = Tabela2.Campo COLLATE DATABASE_DEFAULT

    Agradecimentos a
    http://blog.sqlauthority.com/

Deixe o seu comentário

Aviso: Todo e qualquer texto publicado na internet através deste sistema não reflete, necessariamente, a opinião deste site ou do(s) seu(s) autor(es). Os comentários publicados através deste sistema são de exclusiva e integral responsabilidade e autoria dos leitores que dele fizerem uso. O autor deste site reserva-se, desde já, o direito de excluir comentários e textos que julgar ofensivos, difamatórios, caluniosos, preconceituosos ou de alguma forma prejudiciais a terceiros. Textos de caráter promocional ou inseridos no sistema sem a devida identificação do seu autor (nome completo e endereço válido de email) também poderão ser excluídos.