;WITH DATA
AS
(
SELECT Id
,
AlphaNumericData
, CASE WHEN
AlphaNumericData IS NULL
OR ISNULL(AlphaNumericData,'') = '' THEN 0
ELSE CHARINDEX(' ',AlphaNumericData,0)
END AS char_index
, CASE WHEN
AlphaNumericData IS NULL
OR ISNULL(AlphaNumericData,'') = '' THEN NULL
WHEN CHARINDEX(' ',AlphaNumericData,0) <> 0
THEN
SUBSTRING(AlphaNumericData,CHARINDEX(' ',AlphaNumericData,0) +1 , LEN(AlphaNumericData))
END AS truncatedData
, CONVERT(VARCHAR(max),
CASE WHEN CHARINDEX(' ',AlphaNumericData,0) = 0
AND
ISNULL(AlphaNumericData,'') <> ''
AND
ISNUMERIC(AlphaNumericData) = 1
THEN
AlphaNumericData
WHEN
ISNUMERIC(SUBSTRING(AlphaNumericData,0,CHARINDEX(' ',AlphaNumericData,0))) = 1
THEN
SUBSTRING(AlphaNumericData,0,CHARINDEX(' ',AlphaNumericData,0))
ELSE
''
END
)AS Numeric
, CONVERT(VARCHAR(max),
CASE WHEN CHARINDEX(' ',AlphaNumericData,0) = 0
AND
ISNULL(AlphaNumericData,'') <> ''
AND
ISNUMERIC(AlphaNumericData) <> 1
THEN
AlphaNumericData
WHEN
ISNUMERIC(SUBSTRING(AlphaNumericData,0,CHARINDEX(' ',AlphaNumericData,0))) <> 1
THEN
SUBSTRING(AlphaNumericData,0,CHARINDEX(' ',AlphaNumericData,0))
ELSE
''
END
)AS Alphabets
FROM
@tblAlphanumeric
UNION ALL
SELECT d.Id
, d.AlphaNumericData
, CASE WHEN d.truncatedData IS NULL
OR ISNULL(truncatedData,'') = '' THEN 0
ELSE CHARINDEX(' ',truncatedData,0)
END AS char_index
, CASE WHEN d.truncatedData IS NULL
OR ISNULL(d.truncatedData,'') = '' THEN NULL
WHEN CHARINDEX(' ',d.truncatedData,0) <> 0
THEN SUBSTRING(d.truncatedData,CHARINDEX(' ',d.truncatedData,0) +1 , LEN(d.truncatedData))
END AS
truncatedData
, CONVERT(VARCHAR(max),d.Numeric+
(CASE WHEN CHARINDEX(' ',d.truncatedData,0) = 0
AND ISNULL(d.truncatedData,'') <> ''
AND ISNUMERIC(d.truncatedData) = 1
THEN
d.truncatedData
WHEN ISNUMERIC(SUBSTRING(d.truncatedData,0,CHARINDEX(' ',d.truncatedData,0))) = 1
THEN
SUBSTRING(d.truncatedData,0,CHARINDEX(' ',d.truncatedData,0))
ELSE ''
END)) AS Numeric
, CONVERT(VARCHAR(max),d.Alphabets+
(CASE WHEN CHARINDEX(' ',d.truncatedData,0) = 0
AND ISNULL(d.truncatedData,'') <> ''
AND ISNUMERIC(d.truncatedData) <> 1
THEN
d.truncatedData
WHEN
ISNUMERIC(SUBSTRING(d.truncatedData,0,CHARINDEX(' ',d.truncatedData,0))) <> 1
THEN
SUBSTRING(d.truncatedData,0,CHARINDEX(' ',d.truncatedData,0))
ELSE ''
END)) AS Alphabets
FROM
DATA d
WHERE d.truncatedData IS NOT NULL
)
select d.Id, d.AlphaNumericData,
CASE WHEN Numeric = '' THEN 'No Number Found'
ELSE
Numeric
END AS Numbers,
CASE WHEN Alphabets = '' THEN 'No Alphabets Found'
ELSE
Alphabets
END AS Alphabets
from
DATA d
where
truncatedData is null
order by d.Id