sexta-feira, 5 de agosto de 2011

Função isdigit no SQL Server


Função isdigit no SQL Server

Esta função escalar excelente para testar se um derterminado campo tem strings, letras ou apenas números em SQL Server.

Retorna 1 para verdadeiro caso seja apenas números e 0 para falso, caso encontre textos dentro do campo.

Espero ter ajudado.

Segue fonte abaixo:

--
-- Nome Artefato/Programa..: sp_isdigit.sql
-- Autor(es)...............: Emerson Hermann (emersonhermann [at] gmail.com) O Peregrino (http://www.emersonhermann.blogspot.com) adaptado de http://www.simple-talk.com/sql/t-sql-programming/sql-string-user-function-workbench-part-1/#eighth
-- Data Inicio ............: 08/07/2011
-- Data Atualizacao........: 05/08/2011
-- Versao..................: 0.02
-- Compilador/Interpretador: T-SQL (Transact SQL) 
-- Sistemas Operacionais...: Windows
-- SGBD....................: MS SQL Server 2008
-- Kernel..................: Nao informado!
-- Finalidade..............: store procedure (function) para testa se um campo é digito ou não, retorna 1 para verdadeiro e 0 para falso 
-- OBS.....................: 
--

IF EXISTS (
            SELECT * 
              FROM sys.objects 
             WHERE object_id = OBJECT_ID(N'[dbo].[sp_isdigit]') 
               AND type IN (N'FN')
           )
 DROP FUNCTION sp_isdigit
GO

CREATE FUNCTION sp_isdigit (@string varchar(max))  

RETURNS INT
AS 
BEGIN
   RETURN 
   (  
     SELECT CASE WHEN PATINDEX('%[^0-9]%', @string) > 0 THEN 
       0
      ELSE 
       1
      END AS sp_isdigit
   )
END;
GO
/*
Exemplo: 

SELECT dbo.sp_isdigit('ISSO É UM VALOR NÚMERICO?'); -- 0 
SELECT dbo.sp_isdigit('3000'); --retorno 1
SELECT dbo.sp_isdigit('2700.00'); --retorno 0 
*/

Nenhum comentário:

Postar um comentário