Monday, January 28, 2013

NAME CHECK PROCEDURE

--For checking name duplicacy/re-application during new recruitment
DECLARE @string char(75),
@output1 varchar(1000),
@First   VARCHAR(25),
@Middle  VARCHAR(25),
@Last    VARCHAR(25),
@NCHECK  VARCHAR(75),
@NCHECK2 VARCHAR(75),
@NCHECK3 VARCHAR(75)

CREATE TABLE #NAME_CHECK
(
First    VARCHAR(25)        NULL,
Middle  VARCHAR(25)        NULL,
Last    VARCHAR(25)        NULL,
Cname   VARCHAR(75)        NULL,
Asc_val VARCHAR(1000)   NULL
)
SET NOCOUNT ON
INSERT INTO #NAME_CHECK(First, Middle, Last)

SELECT ISNULL(H01_First_Name,''), ISNULL(H01_Middle_Name,''), ISNULL(H01_Last_Name,'')
FROM H01_identfcatn
WHERE H01_emp_num = '00002'

UPDATE #NAME_CHECK
SET Cname = UPPER(LTRIM(RTRIM(ISNULL(First,'')+''+ISNULL(Middle,'')+''+ISNULL(Last,''))))
FROM #NAME_CHECK

SELECT @string = Cname,
@First = First,
@Middle = Middle,
@Last = Last
FROM #NAME_CHECK

SET @output1 = ''

SELECT @output1 = @output1 + CAST(ASCII(SUBSTRING(@string, number, 1)) as varchar) + '+'
FROM master..spt_values
WHERE TYPE = 'p' and number between 1 and LEN(@string)
ORDER BY number

UPDATE #NAME_CHECK
SET Asc_val = @output1

SELECT * FROM #NAME_CHECK
SET @NCHECK  = 'KUMARAKHILESHJHA'
SET @NCHECK2 = 'JHAKUMARAKHILESH'
SET @NCHECK3 = 'JHAKOMAARAKHILESH'

--Looking for similarity in names--Name
--@NCHECK
SELECT Cname AS 'SOUNDEX'
FROM #NAME_CHECK
WHERE SOUNDEX(@NCHECK) = SOUNDEX(Cname)

SELECT Cname ,@NCHECK, DIFFERENCE(Cname,@NCHECK) AS 'Difference'
FROM #NAME_CHECK
WHERE DIFFERENCE(Cname,@NCHECK)>=2

--@NCHECK2
SELECT Cname AS 'SOUNDEX'
FROM #NAME_CHECK
WHERE SOUNDEX(@NCHECK2) = SOUNDEX(Cname)

SELECT Cname ,@NCHECK2, DIFFERENCE(Cname,@NCHECK2) AS 'Difference'
FROM #NAME_CHECK
WHERE DIFFERENCE(Cname,@NCHECK2)>=2

--@NCHECK3
SELECT Cname AS 'SOUNDEX'
FROM #NAME_CHECK
WHERE SOUNDEX(@NCHECK3) = SOUNDEX(Cname)

SELECT Cname ,@NCHECK3, DIFFERENCE(Cname,@NCHECK3) AS 'Difference'
FROM #NAME_CHECK
WHERE DIFFERENCE(Cname,@NCHECK3)>=2

DROP TABLE #NAME_CHECK
------------------------------------------------------------------------------------




---- EXEC SALARY_FITMENT_SOM2 'KSLTDJMD','KSSD','1','Somnath  Das'
--- grant exec on SALARY_FITMENT_SOM2 to public  
ALTER PROC SALARY_FITMENT_SOM2             
(             
@C03_Organisation_code GLCOMPANY,             
@C29_Location_Code GLLOCN,             
@lang_id      int,             
@NAME VARCHAR(100)
)
AS
BEGIN

CREATE Table #ASCII_TEXT
(
Position INT,
Letter varchar(1),
Letter_Val INT,
Sl INT
)

CREATE Table #ASCII_final
(
NAME VARCHAR(100) null
)

Declare @Name_U varchar(100),
        @Name_T varchar(100)

Select @Name_U = (Select UPPER(@NAME))
Set @Name_T = ''


DECLARE @position int,
        @Letter_Val INT,
        @Sl1 int

SET @position = 1
WHILE @position <= DATALENGTH(@Name_U)
BEGIN
INSERT INTO #ASCII_TEXT(Position,Letter,Letter_Val)
SELECT @position,CHAR(ASCII(SUBSTRING(@Name_U, @position, 1))),ASCII(SUBSTRING(@Name_U, @position, 1))

Select @Letter_Val = (Select ASCII(SUBSTRING(@Name_U, @position, 1)))

IF(@position = 1 and @Letter_Val = 32)
BEGIN
Set @Sl1 = 0
END

ELSE IF(@position = 1 and @Letter_Val <> 32)
BEGIN
Set @Sl1 = 1
END

ELSE IF(@position > 1 and @Letter_Val = 32)
BEGIN
Set @Sl1 = 0
END

ELSE IF(@position > 1 and @Letter_Val <> 32)
BEGIN
Set @Sl1 = (Select Sl from #ASCII_TEXT where Position = @position-1)+1
END

UPDATE #ASCII_TEXT
Set Sl = @Sl1
Where Position = @position

IF(@Letter_Val <> 32)
BEGIN
Select @Name_T = (Select @Name_T+CHAR(ASCII(SUBSTRING(@Name_U, @position, 1))))
END

SET @position = @position + 1
END


Select @Name_U
Select * from #ASCII_TEXT
Select @Name_T
END

No comments:

Post a Comment