Com minhas recentes pesquisas utilizando PHP5 e SQL Server 2000 (Não é MSDE!!!) precisei de uma forma de tratar os campos de telefone sem precisar utilizar código PHP como explode() ou até substr(). Tendo isso em mente, criei algumas stored-procedures no banco de dados e mesmo assim o SQL Server 2000 (Não sei o 2005!!!) não possibilita a criação de máscaras de filtragem de dados, então escrevi uma User Defined Function que utiliza o código demonstrado mais adiante.
Suponha que sua tabela no banco de dados contenha um campo telefone do tipo varchar com tamanho de 10. Quando você adicionar os registros, o valor deverá serDDDPREFIXOSUFIXO, ou seja, dois dígitos para o DDD, mais quatro dígitos para o PREFIXO e finalmente quatro dígitos para o SUFIXO do registro em questão.
A função que criei se chama sys_FormatarTelefone e seu código está listado a seguir:
CREATE FUNCTION sys_FormatarTelefone( @TELEFONE VARCHAR(10) )
RETURNS VARCHAR(14)
AS
BEGIN
DECLARE @DDD VARCHAR(2)
DECLARE @PREFIXO VARCHAR(4)
DECLARE @SUFIXO VARCHAR(4)
DECLARE @FORMATADO VARCHAR(14)SET @DDD = SUBSTRING( @TELEFONE, 0, 3 )
SET @PREFIXO = SUBSTRING( @TELEFONE, 3, 4 )
SET @SUFIXO = SUBSTRING( @TELEFONE, 7, 4 )
SET @FORMATADO = ‘(’ + @DDD + ‘) ‘ + @PREFIXO + ‘-’ + @SUFIXORETURN( @FORMATADO )
END
Para utilizar esta função, eu criei uma stored-procedure para cada um dos módulos do meu sistema, porém irei mostrar uma forma simples de recuperar dados de uma função no SQL Server 2000 através do SELECT comum:
SELECT
t.nome ‘Nome do Contato’,
usuario.sys_FormatarTelefone(t.telefone) ‘Telefone’,
t.email ‘E-Mail do Contato’
FROM
suatabeladecontatos t
WHERE
t.qualquercondicao = 1
Execute estes scripts no seu Query Analizer e veja como fica mais fácil tratar os dados de diversos tipos de campos sem precisar “costurar” códigos com o PHP.
Bem, por enquanto é isso, conforme meus progressos no SQL Server 2000, vou postando aqui no site…
Abraços à todos!!!