Thursday, May 16, 2013

Check Digit Calculation


DECLARE @Temp1 INT
       ,@Temp2 INT
       ,@UPC VARCHAR(20)
       ,@CheckDigit INT;

SET @UPC = 547

SELECT @UPC = rtrim(ltrim(@UPC))
WHILE LEN(@UPC) < 11 SET @UPC = '0' + @UPC

SELECT @Temp1 = 0 +
SUBSTRING(@upc,1,1) +
SUBSTRING(@upc,3,1) +
SUBSTRING(@upc,5,1) +
SUBSTRING(@upc,7,1) +
SUBSTRING(@upc,9,1) +
SUBSTRING(@upc,11,1) 

SELECT @Temp1 = @Temp1 * 3

SELECT @Temp2 = 0 +
SUBSTRING(@upc,2,1) +
SUBSTRING(@upc,4,1) +
SUBSTRING(@upc,6,1) +
SUBSTRING(@upc,8,1) +
SUBSTRING(@upc,10,1) 

SELECT @Temp1 = @Temp1 + @Temp2

SELECT @Temp1 = (10- (@Temp1 % 10)) % 10

SELECT @CheckDigit = @Temp1

SELECT @CheckDigit

To pad zeros in left with the numerical value


SELECT EmpID
,REPLICATE('0',11 - LEN(EmpID))+ CAST(EmpID AS varchar ) AS EmpKey
FROM dbo.DimEmployee

Script to count rows in all tables in a database

SELECT '[' + SCHEMA_NAME(t.schema_id) + '].[' + t.name + ']' AS fulltable_name
     , SCHEMA_NAME(t.schema_id) AS schema_name
     , t.name AS table_name
     , i.rows
FROM sys.tables AS t INNER JOIN
sys.sysindexes AS i 
ON t.object_id = i.id AND i.indid < 2