ID card, organization, business license number verification SQL function

From , 3 Years ago, written in SQL, viewed 53 times.
URL https://pastebin.vip/view/161882dd
  1. GO
  2. /****** Object:  UserDefinedFunction [ro].[wj_ValidateIDC]    Script Date: 09/29/2012 11:23:34 ******/
  3. SET ANSI_NULLS ON
  4. GO
  5. SET QUOTED_IDENTIFIER ON
  6. GO
  7. --验证身份证号码
  8. --编者:
  9. --创建日期:2012-09-18
  10. --参数:@idc 身份证号
  11. CREATE FUNCTION [ro].[wj_ValidateIDC]
  12. (
  13.  @idc VARCHAR(18)
  14. )RETURNS BIT
  15. AS
  16. BEGIN
  17.  
  18.  DECLARE @validFactors VARCHAR(17),@validCodes VARCHAR(11),@i TINYINT,@iTemp INT
  19.  SELECT @validFactors='79A584216379A5842',@validCodes='10X98765432',@i=1,@iTemp=0
  20.  --验证校验位
  21.  --根据担保数据库增加条件,否则报错,by WJ
  22.  IF (@idc LIKE 'x%' OR @idc LIKE '*%' OR @idc LIKE 'T%')
  23.     RETURN(0)
  24.  IF LEN(@idc)<>15 AND LEN(@idc)<>18--身份证号只有15或18位
  25.   RETURN(0)
  26.  IF LEN(@idc)=15  --如果是15位身份证 则只验证日期
  27.      IF (ISDATE('19'+SUBSTRING(@idc,7,6))=0 AND '19'+SUBSTRING(@idc,7,6) BETWEEN '1900-01-01' AND '2010-01-01')
  28.         RETURN(0)
  29.      ELSE
  30.         RETURN(1)
  31.  --18位身份证 验证日期 校验位
  32.  IF (ISDATE(SUBSTRING(@idc,7,8))=0 AND SUBSTRING(@idc,7,6) BETWEEN '1900-01-01' AND '2010-01-01')--验证日期
  33.     RETURN(0)
  34.  ---验证校验位开始
  35.  
  36.  WHILE @i<18
  37.     BEGIN
  38.        SELECT @iTemp=@iTemp+CAST(SUBSTRING(@idc,@i,1) AS INT)*
  39.              (CASE SUBSTRING(@validFactors,@i,1) WHEN 'A' THEN 10 ELSE SUBSTRING(@validFactors,@i,1) END)
  40.              ,@i=@i+1
  41.     END
  42.  IF SUBSTRING(@validCodes,@iTemp%11+1,1)=RIGHT(@idc,1)
  43.     RETURN 1
  44.  ELSE
  45.     RETURN 0
  46.  RETURN 0
  47. END
  48.  
  49.  
  50. GO
  51. /****** Object:  UserDefinedFunction [ro].[wj_ValidateYYZZNo]    Script Date: 09/29/2012 11:25:49 ******/
  52. SET ANSI_NULLS ON
  53. GO
  54. SET QUOTED_IDENTIFIER ON
  55. GO
  56. --功能:验证营业执照号
  57. --编者:
  58. --创建日期:2012-09-20
  59. --参数:@ZzNo 营业执照号
  60. CREATE FUNCTION [ro].[wj_ValidateYYZZNo]
  61. (
  62.  @ZzNo VARCHAR(15)
  63. )RETURNS BIT
  64. AS
  65. BEGIN
  66.  
  67.  DECLARE @m INT, @n INT, @s INT , @p INT ,@i INT ,@RESULT INT
  68.  SELECT @m=10,@n=11,@p=@m
  69.  
  70.  IF (LEN(LTRIM(RTRIM(@ZzNo)))=13 AND ISNUMERIC(@ZzNo) =1)
  71.  BEGIN
  72.  RETURN 1
  73.  END
  74.  IF (ISNUMERIC(LTRIM(RTRIM(@ZzNo)))=0)
  75.  BEGIN
  76.  RETURN 0
  77.  END
  78.  IF (LEN(LTRIM(RTRIM(@ZzNo)))<>15)
  79.  BEGIN
  80.  RETURN 0
  81.  END
  82.  
  83.  SET @i=1
  84.  WHILE @i <=14
  85.  BEGIN
  86.  SET @s = SUBSTRING(@ZzNo,@i,1)
  87.  SET @p = @p+@s
  88.  SET @p =@p%@m
  89.  IF @p = 0
  90.  BEGIN
  91.     SET @p= @m
  92.  END
  93.  SET @p = @p *2
  94.  SET @p = @p%@n
  95.  SET @i=@i+1
  96.  END
  97.  SET @p = @p+SUBSTRING(@ZzNo,15,1)
  98.  SET @p = @p%@m
  99.  
  100.  IF @p=1
  101.     BEGIN
  102.     SET @RESULT =1
  103.     END
  104.     ELSE
  105.     BEGIN
  106.     SET @RESULT =0
  107.     END
  108. RETURN @RESULT
  109. END
  110.  
  111. GO
  112. /****** Object:  UserDefinedFunction [ro].[wj_ValidateZZJGNo]    Script Date: 09/29/2012 11:26:32 ******/
  113. SET ANSI_NULLS ON
  114. GO
  115. SET QUOTED_IDENTIFIER ON
  116. GO
  117. --功能:组织机构号验证
  118. --编者:
  119. --创建日期:2012-09-20
  120. --参数:@ZZJGNo 组织机构号
  121. ALTER FUNCTION [ro].[wj_ValidateZZJGNo]
  122. (
  123.  @ZZJGNo VARCHAR(20)
  124. )RETURNS BIT
  125. AS
  126. BEGIN
  127. DECLARE @c VARCHAR(20),@zz INT,@z INT,@i INT,@jaz VARCHAR(30),@C9 VARCHAR(10)
  128. SET @ZZJGNo = UPPER(@ZZJGNo)
  129.  
  130. SET @i=1
  131. WHILE @i <=8
  132. BEGIN
  133. SET @c= SUBSTRING(@ZZJGNo,@i,1)
  134. IF @c>='A' AND @c<='Z'
  135. BEGIN
  136.   SET @z = (ASCII(@c)-55) * (CASE @i WHEN 1 THEN 3 WHEN 2 THEN 7 WHEN 3 THEN 9 WHEN 4 THEN 10 WHEN 5 THEN 5 WHEN 6 THEN 8 WHEN 7 THEN 4 WHEN 8 THEN 2 END)
  137. END
  138. ELSE IF @c>='0' AND @c<='9'
  139. BEGIN
  140.   SET @z=CONVERT(NUMERIC,@c) * (CASE @i WHEN 1 THEN 3 WHEN 2 THEN 7 WHEN 3 THEN 9 WHEN 4 THEN 10 WHEN 5 THEN 5 WHEN 6 THEN 8 WHEN 7 THEN 4 WHEN 8 THEN 2 END)
  141.  
  142. END
  143. ELSE
  144. BEGIN
  145. RETURN 0
  146. END  
  147. SET @zz = ISNULL(@zz,0)+@z
  148. SET @i = @i+1
  149. END
  150.  
  151.  
  152. SET @jaz = 11-(@zz%11)
  153. IF @jaz=10
  154. BEGIN
  155. SET @C9 = 'X'
  156. END
  157. ELSE IF @jaz =11
  158. BEGIN
  159. SET @C9='0'    
  160. END
  161. ELSE
  162. BEGIN
  163. SET @C9=LTRIM(RTRIM(@jaz))
  164. END
  165.  
  166.  
  167. IF @ZZJGNO = SUBSTRING(@ZZJGNO,1,8) +@C9
  168. BEGIN
  169.     RETURN 1
  170. END
  171. IF @ZZJGNO = SUBSTRING(@ZZJGNO,1,8)+'-'+@C9
  172. BEGIN
  173.     RETURN 1
  174. END
  175. IF @ZZJGNO = SUBSTRING(@ZZJGNO,1,8) + '—' +@C9
  176. BEGIN
  177.     RETURN 1
  178. END
  179. IF @ZZJGNO = SUBSTRING(@ZZJGNO,1,8) +' '+@C9
  180. BEGIN
  181.     RETURN 1
  182. END
  183.  RETURN 0
  184. END
  185. //SQL/5337

Reply to "ID card, organization, business license number verification SQL function"

Here you can reply to the paste above

captcha

https://burned.cc - Burn After Reading Website