tag:blogger.com,1999:blog-5907068516438800184.post6159572681429682725..comments2022-04-01T00:29:20.020-07:00Comments on WILLIAM SANCHEZ: Validar número de cédula nicaragüense en sql serverWilliam Sánchezhttp://www.blogger.com/profile/07292517976528044575noreply@blogger.comBlogger1125tag:blogger.com,1999:blog-5907068516438800184.post-29647061524411583642018-05-31T16:55:28.540-07:002018-05-31T16:55:28.540-07:00USE [TUBASEDATOS]
GO
/****** Object: UserDefinedF...USE [TUBASEDATOS]<br />GO<br />/****** Object: UserDefinedFunction [dbo].[ufn_EsCedula] Script Date: 31/5/2018 5:42:33 p. m. ******/<br />SET ANSI_NULLS ON<br />GO<br />SET QUOTED_IDENTIFIER ON<br />GO<br />/*<br /> * Autor: William Sánchez<br /> * Descripción: Verifica si una cadena de texto es un numero de cédula valida<br /> * 1) verifica que tenga el patrón:13 dígitos + 1 letra<br /> * 2) verifica que los 6 dígitos del 4to al 9no correspondan a una fecha valida<br /> * Basado en el trabajo de: Arnoldo Suarez Bonilla - arsubo@yahoo.es<br /> * Tomado del Trabajo de: Denis Torres Guadamuz <br /> * Validador de Número de Cédula Nicaraguense JavaScrpt<br /> */<br />CREATE FUNCTION [dbo].[ufn_EsCedula](@Texto NVARCHAR(16))<br />RETURNS BIT <br /><br />BEGIN<br /> DECLARE @EsCedula BIT<br /> declare @cedula varchar(20),<br /> @val numeric(13, 0),<br /> @letra char(1),<br /> @Letras varchar(23),<br /> @Letracedula char(1)<br /><br /> set @Letras = 'ABCDEFGHJKLMNPQRSTUVWXY'<br /> set @cedula = SUBSTRING(REPLACE(@Texto,'-',''),1,13) --PARTE NUMERICA DE LA CEDULA SIN GUIONES<br /> set @Letracedula = SUBSTRING(REPLACE(LTrim(Rtrim(@Texto)),'-',''),14,1)<br /><br /> <br /> --CALCULO DE LA LETRA DE LA CEDULA <br /> set @val = convert(numeric(13, 0), @cedula) - floor(convert(numeric(13, 0), @cedula) / 23) * 23<br /> set @letra = SUBSTRING(@Letras, @val + 1, 1)<br /> <br /><br /> IF(@Texto LIKE'[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][A-Z]')<br /> BEGIN<br /> IF (ISDATE(SUBSTRING(@Texto,8,2)+SUBSTRING(@Texto,6,2)+SUBSTRING(@Texto,4,2))=1)<br /> -- Validamos la letra calculada con la letra digitada en documento<br /> if (@letra= @Letracedula)<br /> SET @EsCedula = 1;<br /> else<br /> SET @EsCedula = 0; <br /> ELSE<br /> SET @EsCedula = 0; <br /> END<br /> ELSE<br /> SET @EsCedula = 0; <br />RETURN @EsCedula;<br />END<br /><br /><br />Este es un aporte a mas a complementar la función, usando la colaboracion de Denis Torres Guadamuz , donde hare referencia : Basado en el trabajo de: Arnoldo Suarez Bonilla - arsubo@yahoo.es<br />vhporrashttps://www.blogger.com/profile/07280880552351524914noreply@blogger.com