Skip to main content

T SQL : SMS Validation format


DECLARE
 @BDay varchar(15),
 @Code varchar(10),
 @CusTomerNo varchar(10)

DECLARE
 @SMS varchar(500)
 ,@OutBoundSMS varchar(500)
 ,@WordCount int
 ,@IsValidSMS bit

--SET @SMS = 'FW 01928 12311995' -- valid
--SET @SMS = 'FW 101928 12311995' -- valid
--SET @SMS = 'QUERY 101928 12311995' -- Invalid
--SET @SMS = 'FW 1x1928 12311995' -- Invalid
--SET @SMS = 'FW 1x1928 12.31.1995' -- Invalid
--SET @SMS = 'FW 1x1928 12.31.1995' -- Invalid
SET @SMS = 'FW' -- Invalid
--SET @SMS = 'FW 01928' -- Invalid
--SET @SMS = 'FW A1928' -- Invalid

SET @IsValidSMS = 0

SELECT
 IDENTITY(int, 1, 1) AS Id,
 splitdata
INTO #temp1 
FROM dbo.fnSplitString(@SMS,' ')

SELECT @WordCount = COUNT(*) FROM #temp1

IF @WordCount = 3
BEGIN
 --SELECT 'Valid 3 words format...'
 SELECT TOP 1 @Code = splitdata FROM #temp1 WHERE Id = 1
 SELECT TOP 1 @CusTomerNo = splitdata FROM #temp1 WHERE Id = 2  
 SELECT TOP 1 @BDay = splitdata FROM #temp1 WHERE Id = 3
 --SELECT [Code] = @Code
 -- , [IsNotQuery] = CASE WHEN @Code = 'QUERY' THEN 0 ELSE 1 END
 -- , [EmpNo] = @CusTomerNo
 -- , [IsValidEmpNo] = (CASE WHEN (ISNUMERIC(@CusTomerNo) = 1 AND LEN(@CusTomerNo) BETWEEN 5 AND 6) THEN 1 ELSE 0 END)
 -- , [BDay] = @BDay
 -- , [IsValidBDay] = (CASE WHEN ISNUMERIC(@BDay) = 1 AND LEN(@BDay) = 8 THEN 1 ELSE 0 END)
 SET @IsValidSMS = CASE WHEN
       (CASE WHEN @Code = 'QUERY' THEN 0 ELSE 1 END) = 1
       AND (CASE WHEN (ISNUMERIC(@CusTomerNo) = 1 AND LEN(@CusTomerNo) BETWEEN 5 AND 6) THEN 1 ELSE 0 END) = 1
       AND (CASE WHEN ISNUMERIC(@BDay) = 1 AND LEN(@BDay) = 8 THEN 1 ELSE 0 END) = 1
      THEN 1 ELSE 0 END 
END

IF @IsValidSMS = 0
BEGIN
  IF @WordCount = 1 
  SET @OutBoundSMS = 'Invalid format. For '+ UPPER(@SMS) + ', please use this format: ' +  + UPPER(@SMS) + ' <space>CustomerNo<space>BirthDate(MMDDYYYY)'
 ELSE
  SET @OutBoundSMS = 'Invalid format. Please use this format: CODE<space>CustomerNo<space>BirthDate(MMDDYYYY)'
       + CHAR(13) + CHAR(10) + CHAR(13) + CHAR(10) + 'For available codes:'
       + CHAR(13) + CHAR(10) + 'OT - OverTime'
       + CHAR(13) + CHAR(10) + 'SSS - SSS Deduction'
  SELECT @OutBoundSMS
END


DROP TABLE #temp1


Comments