15/10/2018

Contar caracteres com MySQL

Vamos fazer uso das funções da linguagem SQL para contar caracteres de um campo salvo em uma tabela. Ou seja, vamos selecionar diversos registros de uma tabela e contar os caracteres de um de seus campos.

No MySQL temos várias funções para contar caracteres:

LENGTH(cadeia) - comando também existente no Oracle
Recebe uma cadeia , conta e retorna o número de caracteres.

CHARACTER_LENGTH(cadeia) 
Recebe também uma cadeia e retorna o número de caracteres contados.

CHAR_LENGTH(cadeia)
É um sinônimo de CHARACTER_LENGTH. Embora nem todas as versões de MySQL o tenham.

A diferença entre LENGTH e CHARACTER_LENGTH é que em CHARACTER_LENGTH um caractere "multibyte" conta como um só caractere. Em LENGTH conta o número de bytes da cadeia. Assim, no caso de ter uma cadeia com 5 caracteres que ocupam 2 bytes cada um, LENGTH retornaria 10 e CHARACTER_LENGTH só 5.

Por enquanto vamos utilizar CHARACTER_LENGTH, ela devolverá os resultados que esperamos obter, o número de caracteres da cadeia, independentemente de que a codificação possa ser multi-byte.

SELECT character_length( 'um texto' )

Esta sentença devolveria o valor 8, que é o número de caracteres que possui a cadeia "um texto".

Porém, agora imaginemos que queremos obter todos os países de uma tabela, junto com o número de caracteres que têm cada uma das cadeias do nome do país.

SELECT CHARACTER_LENGTH(nome_país), nome_país FROM país

Isto nos retornaria um conjunto de registros com o número de caracteres de cada nome do país e em seguida outro campo com o nome do país.

SELECT nome_país FROM país where CHARACTER_LENGTH(nome_país)=6

Isto nos retorna os nomes de país que possuem 6 caracteres.

SELECT CHARACTER_LENGTH(nome_país) as 'numcaracteres', nome_país FROM país ORDER BY CHARACTER_LENGTH(nome_país)

Esta última sentença retorna um conjunto de registros onde o primeiro campo, ao qual demos o nome de "numcaracteres" para depois nos referirmos a ele, mostra o número de caracteres e o segundo campo, o nome do país. Em seguida está ordenado pela longitude da cadeia, contada também por seus caracteres.

08/10/2018

Você sabe o que é Procrastinação?


Sabe aquele dia em que tudo parece estar conspirando contra você e tudo acontece ao mesmo tempo? Ai vem aquele desejo de jogar tudo pro alto e deixar tudo pra depois... então... isso é procrastinação.

É uma palavra complicada e mais complicado ainda são os seus efeitos sobre a sua produtividade e na gestão do tempo. A procrastinação é uma disposição comportamental que leva a adiar e a evitar determinadas tarefas ou certas decisões. Este comportamento de fuga é causado pela existência de outras atividades mais agradáveis e que assumem, aparentemente, maior saliência no imediato.

Imagine duas tarefas na lista de pendencias no seu dia, sendo que uma tem uma prioridade maior que a outra e você decide executar a tarefa com menor prioridade apenas por juga-la mais prazerosa. Isso também é procrastinação e afeta diretamente a sua organização diária.

Muitas vezes não encontramos motivação para realizar determinadas tarefas ou atividades, arranjando uma variedade de desculpas, pensamentos e até medos que possam absorver a prioridade nos nossos dias. No entanto a procrastinação pode ser facilmente ultrapassada se simplesmente tivermos tempo para perceber a dinâmica complexa desta fuga psicológica natural.

Veja o meu outro post (clique aqui) como executar uma melhor organização do seu tempo e das suas tarefas, e na próxima terça voltaremos a conversar sobre esse tema.

Abraço a todos.

01/10/2018

Organize-se melhor no trabalho


Dando sequencia aos posts sobre organização e planejamento, vou colocar aqui algumas dicas práticas para melhorar sua produtividade no trabalho e pelo menos dar inicio a uma melhor organização do seu tempo. Vamos lá:

1 - Planeamento para se focar

Para garantir que você passa pelo menos 60% do seu dia nas suas tarefas mais importantes você precisa  planejar cada dia antes de começar a trabalhar. O plano pode não se seguido à risca, mas o simples fato de ter criado um plano irá ajudá-lo a ficar focado no trabalho mais importante.

2 - Resposta em tempo útil

Mesmo que as solicitações não sejam completamente respondidas num prazo de 24 horas, pelo menos deve enviar um breve e-mail ou efetuar uma chamada rápida para avisar que o seu assunto será tratado em breve. Esse contato será importante para uma boa relação com um cliente ou colega de trabalho. A exceção a esta regra existe para solicitações que tenham um prazo de resposta maior, ou uma data de entrega de um trabalho pré acordada. Reserve 15 minutos após almoço e/ou no final de cada dia para processar essas solicitações.

3 - Planeamento de tarefas 

Nada de ficar olhando um projeto como um corpo uniforme. Você deve separar o todo em partes menores: as tarefas. Para começar deve criar uma lista das tarefas necessárias à conclusão do seu trabalho. E depois criar uma sequencia lógica para a sua lista. Seja numa folha de papel ou no Microsoft Project, o importante é que esteja sempre disponível para que você possa visualizar facilmente e atualizar quando necessário. A praticidade também lhe ajudará a manter-se organizado.

4 - Esvaziar a lista de tarefas 

Com foco nas metas da empresa, priorize tarefas que trarão retorno financeiro e agregaram valor a sua área de atuação e ao seu cargo. Sua imagem também é muito importante e os elogios irão estimula-lo a continuar organizado. Um profissional desmotivado tende a ser mais relaxado com suas tarefas e objetivos. Comece pelas tarefas que envolvam apenas você para resolve-las e também aquelas que irão gerar grande impacto, mas que demoram pouco tempo para serem concluídas. Mantenha sempre a sua lista de tarefas de forma a não acumular mais do que duas semanas (este prazo deverá ser ajustado ao seu caso e ao seu tipo de trabalho).

5 - Agenda de Reuniões 

As reuniões são inimigas da produtividade. Se puder evite-as e questione a sua necessidade. Se uma reunião não tem uma agenda clara, ou nem sequer tem uma lista de pontos a tratar pode ser simplesmente uma perda de tempo. Uma lista de pontos a tratar obriga as pessoas a prepararem-se para a mesma e ao mesmo tempo limita a duração do evento (caso seja acordado abordar na reunião apenas os pontos da agenda). EVITE REUNIÕES PARA DEBATER PEQUENAS COISAS. NA MAIORIA DOS CASOS É MUITO MELHOR E MAIS PRATICO ENVIAR UM E-MAIL.

6 - Prepare-se para amanhã 

Antes do fim do seu dia de trabalho reserve (nem que sejam 5 minutos) a preparar o seu dia de amanhã. Use post-its para deixar de forma clara e objetiva os pontos chaves de onde o trabalho foi interrompido e dos próximos passos a seguir. Seja amigo de você mesmo. Quanto melhor for documentado, menor será o seu "start" no dia seguinte.

7 - Organize-se para os outros

Documente tudo. Lembre-se que sempre existe a possibilidade de alguém, algum dia precisar dar continuidade a uma determinada tarefa que hoje é executada por você. Quanto melhor for a documentação menor será o tempo gasto deste novo funcionário com a "curva de aprendizagem". Esse é o principal erro da maioria das empresas. Lembre-se também que um dia, daqui a alguns anos você poderá precisar lembrar de alguma coisa executada hoje.

Boa sorte a todos.
Forte abraço.

17/09/2018

Usando GLOBAL TEMPORARY TABLE

Global temporary table é um objeto que possui um comportamento equivalente a uma tabela, sendo que os dados inseridos estarão disponíveis apenas dentro de uma determinada sessão ou até que sejam “comitados” (mantidos até o fim da transação)… isso depende de como a GTT foi criada. Pode ser muito útil para trabalhar dados temporários antes de serem retornados ao usuário ou gravados numa tabela comum.
Exemplo de criação de GTT onde os dados são mantidos durante a sessão:
CREATE GLOBAL TEMPORARY TABLE TESTE1_GTT
(“EMAIL” VARCHAR2(120 BYTE) NOT NULL ENABLE,
“NOME” VARCHAR2(100 BYTE) NOT NULL ENABLE,
“SOBRENOME” VARCHAR2(100 BYTE) NOT NULL ENABLE)
ON COMMIT PRESERVE ROWS;
Exemplo de criação de GTT onde os dados são mantidos até o fim da transação:
CREATE GLOBAL TEMPORARY TABLE TESTE2_GTT
(“EMAIL” VARCHAR2(120 BYTE) NOT NULL ENABLE,
“NOME” VARCHAR2(100 BYTE) NOT NULL ENABLE,
“SOBRENOME” VARCHAR2(100 BYTE) NOT NULL ENABLE)
ON COMMIT DELETE ROWS;
Atenção as seguintes características das GTTs:
  • Sua definição é visível para todas as sessões, mas seus dados são visíveis e acessíveis somente pela sessão que os inclui.
  • O comando LOCK não tem efeito em tabelas temporárias uma vez que cada sessão tem acesso exclusivo a seus dados.
  • Um comando TRUNCATE trunca somente os dados referentes à sessão do usuário.
  • Os dados são criados na tablespace temporária do usuário.
  • Operações de Rollback to Savepoint são suportadas, mas os dados não são recuperáveis caso ocorra um “crash” porque as modificações não são logadas (gravadas no REDO LOG).
  • Podemos criar índices para uma tabela temporária usando o comando CREATE INDEX. Estes índices também são temporários.
  • Podemos criar triggers para tabelas temporárias assim como views que utilizem simultaneamente tabelas temporárias e permanentes.
  • Os utilitários IMPORT e EXPORT podem exportar e importar a definição de uma tabela temporária, porém nenhum dado é exportado.
  • Da mesma forma, podemos replicar a definição de uma tabela temporária, mas não podemos replicar seus dados.
  • Só podemos executar operações de DDL (ALTER TABLE, DROP TABLE, CREATE INDEX, etc.) para a tabela temporária se não houver nenhuma tabela fazendo acesso a ela.
  • Uma tabela temporária associada à transação é acessível por uma determinada transação e suas transações filha. Porém, uma tabela temporária associada à transação não é acessível por duas transações simultâneas na mesma sessão, apesar de poder ser usada por transações em diferentes sessões.
  • Se uma transação do usuário faz um INSERT em uma tabela temporária, então nenhuma de suas transações filhas pode usar a tabela temporária após isto.
  • Se uma transação filha faz um INSERT em uma tabela temporária, ao fim da transação filha, o dado associado com a tabela temporária é removido. Após isto, tanto a transação do usuário quanto qualquer outra transação podem fazer acesso à tabela temporária.

10/09/2018

Mentoria: Fatos e Fatores (3/3)

No último artigo da série nós trataremos dos aprendizes. Eu atrasei propositalmente o último artigo da série para trazer o resultado de uma pesquisa que iniciei na segunda semana.

Todos nós somos aprendizes, não importa em que etapa de nossa carreira; a capacidade de sempre aprender e evoluir é o diferencial entre profissionais de qualquer área. O discernimento de encontrar quem saiba mais que você sobre determinados assuntos e que seja capaz de auxiliá-lo a desenvolver estes pontos é crucial para a evolução de sua carreira.

Post de destaque

Contar caracteres com MySQL

Vamos fazer uso das funções da linguagem SQL para contar caracteres de um campo salvo em uma tabela. Ou seja, vamos selecionar diversos regi...