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.
Para apresentar os exemplos vamos utilizar a nossa habitual tabela tbl_pplware com os seguintes dados:
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
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:
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
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
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:
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!
- Vamos dar uns toques em queries SQL?
- Vamos dar uns toques em queries SQL? II
- Vamos dar uns toques em queries SQL? III
- Vamos dar uns toques em queries SQL? IV
- Vamos dar uns toques de SQL? V
- Vamos dar uns toques de SQL? VI
- Vamos dar uns toques de SQL? VII
- Vamos dar uns toques de SQL? VIII
- Vamos dar uns toques de SQL? IX
- Cábula” do MySQL
Este artigo tem mais de um ano
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.
Para tal utilizas o LIKE no WHERE. O LIKE tem os wildcards % para strings e _ para apenas um caracter.
ex:
Listagem de informação dos utilizadores que tenham ‘Pedro’ no seu primeiro nome.
SELECT *
FROM tbl_pplware
WHERE Nome LIKE ‘Pedro%’;
Para uma melhor explicação sugiro que dês uma vista de olhos nos tutoriais da W3.
http://www.w3schools.com/sql/sql_like.asp
Obrigado :p
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!!!
Muito bom o artigo! 🙂
Apanhei um erro: “SELECT REPLACE(‘string princial’, ‘string a procurar’, ‘string que ira substituir’)”
Não será Principal?
Mais um bom artigo sobre SQL..
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
isto é mysql ou sql para sqlserver(da microsoft)?
(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/