I would get all the barcode data into a temporary table, and then SPLIT the rows into columns - at that stage not worrying whether there were 5 or 8 columns, and then validate and process the resultant data:DECLARE @ImportData TABLE( T_ID int identity(1,1) NOT NULL, T_Import varchar(1000) NULL, T_Col1 varchar(1000) NULL, T_Col2 varchar(1000) NULL, T_Col3 varchar(1000) NULL, T_Col4 varchar(1000) NULL, T_Col5 varchar(1000) NULL, T_Col6 varchar(1000) NULL, T_Col7 varchar(1000) NULL, T_Col8 varchar(1000) NULL, PRIMARY KEY ( T_ID ))INSERT INTO @ImportData ( T_Import )SELECT '99,9,1,XXXXXXXXXX,XXXXXXXXXXXXXXXXXXXXX' UNION ALLSELECT '99,9,2,,,XXXXXXXXXXXXXXXXXXXXX,XXXXXXXXXX,XXXXXXXXXXXXXXXXXXXXXX'DECLARE @I1 int, @I2 int, @I3 int, @I4 int, @I5 int, @I6 int, @I7 int, @I8 intUPDATE USET @I1 = CHARINDEX(',', T_Import + ',') , [T_Col1] = SUBSTRING(T_Import + ',', 1, @I1-1) , @I2 = CASE WHEN COALESCE(@I1, 0) = 0 THEN 0 ELSE COALESCE(CHARINDEX(',', T_Import + ',', @I1+1), DATALENGTH(T_Import + ',')) END , [T_Col2] = CASE WHEN @I2 = 0 THEN NULL ELSE SUBSTRING(T_Import + ',', @I1+1, @I2-@I1-1) END , @I3 = CASE WHEN COALESCE(@I2, 0) = 0 THEN 0 ELSE COALESCE(CHARINDEX(',', T_Import + ',', @I2+1), DATALENGTH(T_Import + ',')) END , [T_Col3] = CASE WHEN @I3 = 0 THEN NULL ELSE SUBSTRING(T_Import + ',', @I2+1, @I3-@I2-1) END , @I4 = CASE WHEN COALESCE(@I3, 0) = 0 THEN 0 ELSE COALESCE(CHARINDEX(',', T_Import + ',', @I3+1), DATALENGTH(T_Import + ',')) END , [T_Col4] = CASE WHEN @I4 = 0 THEN NULL ELSE SUBSTRING(T_Import + ',', @I3+1, @I4-@I3-1) END , @I5 = CASE WHEN COALESCE(@I4, 0) = 0 THEN 0 ELSE COALESCE(CHARINDEX(',', T_Import + ',', @I4+1), DATALENGTH(T_Import + ',')) END , [T_Col5] = CASE WHEN @I5 = 0 THEN NULL ELSE SUBSTRING(T_Import + ',', @I4+1, @I5-@I4-1) END , @I6 = CASE WHEN COALESCE(@I5, 0) = 0 THEN 0 ELSE COALESCE(CHARINDEX(',', T_Import + ',', @I5+1), DATALENGTH(T_Import + ',')) END , [T_Col6] = CASE WHEN @I6 = 0 THEN NULL ELSE SUBSTRING(T_Import + ',', @I5+1, @I6-@I5-1) END , @I7 = CASE WHEN COALESCE(@I6, 0) = 0 THEN 0 ELSE COALESCE(CHARINDEX(',', T_Import + ',', @I6+1), DATALENGTH(T_Import + ',')) END , [T_Col7] = CASE WHEN @I7 = 0 THEN NULL ELSE SUBSTRING(T_Import + ',', @I6+1, @I7-@I6-1) END , @I8 = CASE WHEN COALESCE(@I7, 0) = 0 THEN 0 ELSE COALESCE(CHARINDEX(',', T_Import + ',', @I7+1), DATALENGTH(T_Import + ',')) END , [T_Col8] = CASE WHEN @I8 = 0 THEN NULL ELSE SUBSTRING(T_Import + ',', @I7+1, @I8-@I7-1) ENDFROM @ImportData USELECT *FROM @ImportData
Kristen