Recebi um e-mail de um internauta que criou uma função em SQL que formata números. A função é bastante simples e pede apenas três parâmetros: valor, separador do milhar e separador decimal.

Segue abaixo o código:
CREATE FUNCTION FormataValor(@Valor DECIMAL(18,2),@SepMilhar CHAR(1),@SepDecimal CHAR(1))
RETURNS  VARCHAR(100) AS
BEGIN
DECLARE @inteiro VARCHAR(98),
@Texto VARCHAR(100),
@decimal VARCHAR(2),
@retorno VARCHAR(100)

SET @Texto = RTRIM(CAST(@Valor AS VARCHAR(50)))
SET @inteiro = CAST(CAST(@Valor AS INTEGER) AS VARCHAR(180))
SET @decimal = SUBSTRING(@Texto, LEN(@Texto)-1,2)
SET @retorno = ”

WHILE (LEN(@inteiro) > 3)
BEGIN
SET @retorno = @SepMilhar + SUBSTRING(@inteiro, LEN(@inteiro)-2, 3) + @retorno
SET @inteiro = SUBSTRING(@inteiro, 1, len(@inteiro)-3)
END

SET @retorno = @inteiro + @retorno
SET @retorno = @retorno + @SepDecimal + @decimal

RETURN @retorno
END

Crédito: Helder

Depois de algum tempo sem postar, estou de volta. Estive um pouco ocupado e em busca de novos conhecimentos. Mas chega de ficar falando besteira e vamos ao que realmente interessa.

Estive pesquisando e encontrei uma maneira de gerar a saída de uma consulta no formato XML utilizando uma consulta em SQL.

SELECT

Clientes.ID,

Pedidos.Descricao,

Clientes.Nome

FROM

Clientes,

Pedidos

WHERE

Clientes.Nome LIKE ‘%Alexandre%’

ORDER BY

Pedidos.ID

FOR XML AUTO

A consulta acima exibirá como resultado (em formato XML) os clientes que contenham ‘Alexandre’ no nome ordenando pelo(s) pedido(s) existente(s).

A cláusula AUTO cria uma hierarquia dos elementos retornados automaticamente. Ex.: Existe o cliente ‘Alexandre’ e o mesmo possue dois pedidos, neste caso o retorno do XML será similar a este:

<Clientes ID=”1″ Nome=”Alexandre”>

<Pedidos Descricao=”Pedido Pendrive 4GB”/>

<Pedidos Descricao=”Pedido Televisor 29pol”/>

</Clientes>

Os nós de pedidos estão entre os clientes, criando assim uma hierarquia.

Provavelmente continuarei este artigo posteriormente, porque existe outras maneiras de utilizar esta técnica. Até a próxima.

Vou abordar no blog um assunto um pouco diferente dos anteriores, explicarei passo-a-passo de como criar uma conexão com um servidor remoto em uma mesma rede.

Primeiramente abra o SQL Server Enterprise Manager, após a abertura, maximize a raiz Microsoft SQL Servers e logo após o SQL Server Group. Feito isto, clique com o botão direito sobre o item SQL Server Group.

SQL Server Group

Abrirá uma janela com o título de Register SQL Server Wizard, clique avançar para prosseguir. Será listado todos os servidores encontrados pelo SQL Server na rede, selecione o(s) servidor(es) de escolha e clique Add para adicionar, avançar novamente.

Register SQL Server Wizard

Selecione o tipo de autenticação, sendo que o primeiro é o login e senha do próprio Windows e o segundo é referente ao SQL Server.

Authentication Mode

Em seguida será mostrado o local onde deseja adicionar a conexão. A primeira corresponde à grupos já existentes e a segunda pede-se para criar um grupo. Clique avançar para prosseguir.

Seleção do Grupo

Pronto, após feito estes procedimentos a conexão está pronta para ser usada.

Usando o CHARINDEX em SQL

dezembro 3, 2007

O CHARINDEX é uma função em SQL que retorna a primeira posição de uma sequencia de caracteres em uma determinada expressão. A primeira posição de contagem é 1.

Sintaxe:

CHARINDEX(expressao1, expressao2 [, posicao_inicial])

expressao1: É onde contém a sequencia de caracteres a ser encontrado.
expressao2: É onde contém a sequencia de caracteres que será feito a busca. Geralmente, é usado uma coluna de um campo.
posicao_inicial: É um parâmetro opcional, que deve-se colocar a posição inicial da busca, caso omitido, será iniciado do zero.

Segue abaixo a sintaxe:

SELECT

Nome,

CHARINDEX(‘papel’, Nome) AS Posicao

FROM

Produto

Na situação acima a busca será iniciada na primeira posição do campo ‘Nome’ da tabela ‘Produto’, porque o último parâmetro que indica a posição inicial de busca foi omitido.

O SQL possui uma função que faz a inverção dos caracteres passados como parâmetro. O parâmetro informado pode ser constante, variáveis, colunas retornadas de um campo e até mesmo um números, seu resultado sempre será VARCHAR.

Sintaxe:

REVERSE(expressão)

SELECT REVERSE(‘Alexandre’) AS ‘Nome’

O resultado da consulta acima será ‘erdnaxelA’, preservando os caracteres maiúsculos e/ou minúsculos.

A palavra-chave @@CPU_BUSY retorna o tempo em milisegundos que a CPU está utilizando desde a última inicialização do SQL Server.

Veja abaixo um exemplo de como usar este recurso:

SELECT @@CPU_BUSY AS ‘CPU ms’, GETDATE() AS ‘Até’

Acima será mostrado a quantidade de processamento que a CPU utilizou até o momento da data.

O ALTER TABLE é usado para adicionar e/ou remover colunas de uma determinada tabela que esteja em um base de dados. Para isto é necessário informar o nome da tabela, o campo da tabela e caso seja uma adição, será necessário passar o tipo do novo campo.

ALTER TABLE

Cliente

ADD

CPF CHAR(11)

Acima foi criado o campo ‘CPF’ na tabela ‘Cliente’ com o tipo CHAR. Para que o campo aceite valores nulos (NULL), basta adicionar o operador ‘=’ e em seguida a palavra NULL.

Já para remover um campo de uma tabela é ainda mais simples, não havendo a necessidade de inserir o tipo do campo.

ALTER TABLE

Cliente

DROP COLUMN

CPF

Lembrando que, ao remover um campo de uma tabela, não haverá a possibilidade de voltar atrás (não pelo meu conhecimento), a não ser que faça um backup manual ou algo parecido.