דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. ארכיון code613m
  4. קוד SQL לבדיקת תקינות תעודת זהות

קוד SQL לבדיקת תקינות תעודת זהות

מתוזמן נעוץ נעול הועבר ארכיון code613m
2 פוסטים 2 כותבים 595 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • א מנותק
    א מנותק
    ארכיטקט
    כתב ב נערך לאחרונה על ידי
    #1

    מוגש כשירות לציבור שוחרי SQL נקי:

    USE [GlobalOptimum]
    GO
    
    /****** Object:  UserDefinedFunction [dbo].[Validation_CheckIsraelID]    Script Date: 08/02/2015 00:54:45 ******/
    SET ANSI_NULLS ON
    GO
    
    SET QUOTED_IDENTIFIER ON
    GO
    
    -- =============================================
    -- Author:		<Author,,Name>
    -- Create date: <Create Date, ,>
    -- Description:	<Description, ,>
    -- =============================================
    CREATE FUNCTION [dbo].[Validation_CheckIsraelID] 
    (
    	-- בודק מספרי תעודת זהות מספר עמותה תיק ניכויים וכדומה כמקובל במדינת ישראל
    	@id nvarchar(10)
    )
    RETURNS bit
    AS
    BEGIN
    
    --אם אין אורך של תשע ספרות זה משבש טובא את כל השיעור ועל כן יחזיר אפס
    if len(@id)<>9  return 0;
    
    --הספרה הימנית היא ספרת הביקורת
    declare @ControlNumberByPass TinyInt = Right(@id,1)
    -- הספרות כולם למעט הימנית ביותר הן גוף המספר
    declare @NumberWithoutControl nvarchar(10) = left(@id,(len(@id)-1))
    
    declare @ControlNumberByCheck TinyInt = 0;
    declare @strNum nvarchar(20) = '';
    declare @i int = 1;
    
    --צובר את הספרות במכפלות לפי משקלים
    WHILE @i <= len(@NumberWithoutControl)
    begin
    set @strNum += cast(Cast(SUBSTRING(@NumberWithoutControl,@i,1) As TinyInt) * (case when @i%2 = 0 then 2 else 1 end) as nvarchar);
    
    set @i+=1;
    end
    
    set @i = 1;
    --מחבר את הספרות שנוצרו
    WHILE @i <= len(@strNum)
    begin
    set @ControlNumberByCheck += Cast(SUBSTRING(@strNum,@i,1) As TinyInt)
    set @i+=1;
    end
    
    --מעדכן למספר המשלים למכפלת עשר מדוייקת
    set @ControlNumberByCheck = (10 - (@ControlNumberByCheck%10))
    
    --מחזיר ערך מאומת על פי בדיקה האם ספרת הביקורת מתאימה
    
    	RETURN (case when @ControlNumberByCheck=@ControlNumberByPass then 1 else 0 end)
    
    END
    
    GO
    

    פורסם במקור בפורום CODE613 ב08/02/2015 00:57 (+02:00)

    אידיאולוגיות גדולות נכנסות למטחנה של עולם המעשה ויוצאות ממנו בפירורים (ווינסטון צ'רצ'יל, סתם סתם, זה שלי)

    תגובה 1 תגובה אחרונה
    4
    • S מנותק
      S מנותק
      softs
      כתב ב נערך לאחרונה על ידי
      #2

      תודה!
      אגב שורה 31 אם תמיד הערך הוא 9 ה LEN מיותר אפשר לשים ישר 8

      פורסם במקור בפורום CODE613 ב08/02/2015 01:09 (+02:00)

      תגובה 1 תגובה אחרונה
      0

      בא תתחבר לדף היומי!
      • התחברות

      • אין לך חשבון עדיין? הרשמה

      • התחברו או הירשמו כדי לחפש.
      • פוסט ראשון
        פוסט אחרון
      0
      • דף הבית
      • קטגוריות
      • פוסטים אחרונים
      • משתמשים
      • חיפוש
      • חוקי הפורום