data storied in column1=1.28748e+006 datatype= varchar(100) Expected output - 1287482 Tried multiple solutions didn't work
I tried multile options it's round value. I want to get display as it is.
UPDATE dbo.testscientif
SET column1 = CASE
WHEN CHARINDEX('e', LOWER(column1)) > 0 THEN
CASE
WHEN CAST(SUBSTRING(column1, CHARINDEX('e', LOWER(column1)) + 1, LEN(column1)) AS INT) >= 0 THEN
CASE
WHEN CHARINDEX('.', LEFT(column1, CHARINDEX('e', LOWER(column1)) - 1)) > 0 THEN
CASE
WHEN CAST(SUBSTRING(column1, CHARINDEX('e', LOWER(column1)) + 1, LEN(column1)) AS INT) >= LEN(SUBSTRING(LEFT(column1, CHARINDEX('e', LOWER(column1)) - 1), CHARINDEX('.', LEFT(column1, CHARINDEX('e', LOWER(column1)) - 1)) + 1, LEN(LEFT(column1, CHARINDEX('e', LOWER(column1)) - 1)))) THEN
CAST(REPLACE(LEFT(column1, CHARINDEX('e', LOWER(column1)) - 1), '.', '') + REPLICATE('0', CAST(SUBSTRING(column1, CHARINDEX('e', LOWER(column1)) + 1, LEN(column1)) AS INT) - LEN(SUBSTRING(LEFT(column1, CHARINDEX('e', LOWER(column1)) - 1), CHARINDEX('.', LEFT(column1, CHARINDEX('e', LOWER(column1)) - 1)) + 1, LEN(LEFT(column1, CHARINDEX('e', LOWER(column1)) - 1))))) AS BIGINT)
ELSE
CAST(LEFT(REPLACE(LEFT(column1, CHARINDEX('e', LOWER(column1)) - 1), '.', ''), LEN(REPLACE(LEFT(column1, CHARINDEX('e', LOWER(column1)) - 1), '.', '')) - (LEN(SUBSTRING(LEFT(column1, CHARINDEX('e', LOWER(column1)) - 1), CHARINDEX('.', LEFT(column1, CHARINDEX('e', LOWER(column1)) - 1)) + 1, LEN(LEFT(column1, CHARINDEX('e', LOWER(column1)) - 1)))) - CAST(SUBSTRING(column1, CHARINDEX('e', LOWER(column1)) + 1, LEN(column1)) AS INT))) AS BIGINT)
END
ELSE
CAST(LEFT(column1, CHARINDEX('e', LOWER(column1)) - 1) + REPLICATE('0', CAST(SUBSTRING(column1, CHARINDEX('e', LOWER(column1)) + 1, LEN(column1)) AS INT)) AS BIGINT)
END
ELSE
NULL
END
WHEN ISNUMERIC(column1) = 1 THEN
CAST(column1 AS BIGINT)
ELSE
NULL
END
WHERE column1 IS NOT NULL;