728x90

방법1)

/*

MS-SQL 서버에서는 에러가 나는거 같아서 조금 수정했습니다.

^^* 좋은 정보 감사합니다..

*/


CREATE PROC jumin_chk

@sjumin CHAR(13)

AS

        DECLARE @i INT, @nDigit INT, @nSum INT, @nLateDigit INT

        SET @i=0
        SET @nSum=0


        WHILE @i < 12

        BEGIN

                SET @nDigit = CAST (substring (@sjumin, @i+1, 1) AS INT)

                IF (@i >= 8)

                        SET @nSum = @nSum + @nDigit * ((@i + 1) % 9 +2)

                ELSE

                        SET @nSum = @nSum + @nDigit * ((@i + 1) % 9 +1)

                SET @i = @i + 1

        END


SET @nDigit = CAST(substring (@sjumin, @i+1, 1) AS INT)

SET @nLateDigit = (11 - @nSum % 11) % 10


IF @nDigit = @nLateDigit

     print  '주민번호 정상'

ELSE

     print  '주민번호 오류'


방법2)

/*
    작성자 : SQL
    작성일 : 2004.06.18
    내  용 :
                주민번호 체크
    실  행 :
                EXEC JUMIN_NO_CHK '1234561234567'
*/
CREATE PROC dbo.JUMIN_NO_CHK
(
    @sjumin CHAR(13)
)
AS
BEGIN

    DECLARE  @i              INT
                   ,@nDigit       INT
                   ,@nSum       INT
                   ,@nLateDigit INT

    -- 여기서 날짜 체크먼저.. ^^

    IF ISDATE(LEFT(@sjumin,6)) = 1
    BEGIN
        SET @i=0
        SET @nSum=0
       
        WHILE @i < 12
        BEGIN
            SET @nDigit = CAST(substring(@sjumin, @i+1, 1) AS INT)
   
            IF (@i >= 8)
                SET @nSum = @nSum + @nDigit * ((@i + 1) % 9 +2)
            ELSE
                SET @nSum = @nSum + @nDigit * ((@i + 1) % 9 +1)
   
            SET @i = @i + 1
        END
   
        SET @nDigit = CAST(substring(@sjumin, @i+1, 1) AS INT)
   
        SET @nLateDigit = (11 - @nSum % 11) % 10
       
        IF @nDigit <> @nLateDigit
            print  '주민번호 오류'
        ELSE
            print  '주민번호 정상'
    END
    ELSE
        print '주민번호 오류'
END

728x90

CREATE FUNCTION [dbo].[ValidateEmail]
(
 @Text varchar(255)
)
RETURNS BIT
AS


    BEGIN
          DECLARE @Letters VARCHAR(255)
          DECLARE @Index INT
          DECLARE @Max INT
          DECLARE @Pass BIT
          SET @Letters = ' abcdefghijklmnopqrstuvwxyz01234567890_-.@'
          SET @Max = LEN(@Text)
          SET @Index = 0
          SET @Pass = 1


          IF @Text IS NULL OR NOT @Text LIKE '_%@__%.__%' RETURN(0)
          WHILE @Index < @Max AND @Pass = 1
              BEGIN
                   SET @Index = @Index + 1
                   IF NOT @Letters LIKE '%' + SUBSTRING(@Text, @Index, 1) + '%' SET @Pass = 0
              END
     RETURN(@Pass)
END

728x90

create function NumberToHanWords(@money as varchar(16))
returns varchar(35)
as
       begin
              declare @map varchar(35)
              declare @nlen int
              declare @mlen int
              declare @npos int
              declare @nchar char(1)
              declare @str varchar(70)
              declare @tmp varchar(2)
              set @npos=0
              set @map = '천백십조천백십억천백십만천백십 '
              set @nlen=len(@money)
              set @mlen=len(@map)
              set @str=''
              while @npos <
=@nlen
                     begin
                            set @nchar = substring(@money,@npos+1,1)
                            select @tmp= case @nchar
                                          when '1' then '일'
                                          when '2' then '이'
                                          when '3' then '삼'
                                          when '4' then '사'
                                          when '5' then '오'
                                          when '6' then '육'
                                          when '7' then '칠'
                                          when '8' then '팔'
                                          when '9' then '구'
                                          when '0' then '영'
                                   end
                            if @tmp <> '영'
                                   begin
                                          set @str= @str + @tmp + substring(@map, @mlen+1-@nlen + @npos +1  ,1)
                                   end
                            else
                                   begin
                                          if ( @nlen - @npos - 1) % 4 = 0  and (right(@str,1) <>'조' and right(@str,1)<>'억' and right(@str,1)<>'만')
                                                 set @str= @str +  substring(@map, @mlen+1-@nlen + @npos+1 ,1)
                                   end
                            set @npos=@npos +1
                     end
              return replace(@str,' ','')
       end

+ Recent posts