Попробуйте?
DECLARE @tempforAnshul TABLE (id INT, new FLOAT);
INSERT INTO @tempforAnshul SELECT 1, 45.67;
INSERT INTO @tempforAnshul SELECT 2, 45.675;
INSERT INTO @tempforAnshul SELECT 3, 123.45;
INSERT INTO @tempforAnshul SELECT 4, 345.34;
INSERT INTO @tempforAnshul SELECT 5, 8023545654;
SELECT id, FORMAT(new, 'G') FROM @tempforAnshul;
Дает вам следующие результаты:
id (No column name)
1 45.67
2 45.675
3 123.45
4 345.34
5 8023545654
Вероятно, также стоит отметить, что FORMAT возвращает либо NULL, либо NVARCHAR, что, по-видимому, является тем, что выхочу?Тем не менее, вы не можете контролировать длину NVARCHAR, поэтому вам, возможно, нужно быть немного осторожнее?
... и затем я перечитал ваш вопрос и увидел, что вы используете SQL Server 2008.Ну, это боль, так как FORMAT не пришел до 2012 года, но этот хак сработает:
WITH x AS (
SELECT id, REVERSE(CONVERT(NVARCHAR(50), CONVERT(DECIMAL(30,8), new))) AS val FROM @tempforAnshul),
y AS (
SELECT id, REVERSE(SUBSTRING(val, PATINDEX('%[^0]%', val), 100)) AS val FROM x)
SELECT
id,
CASE
WHEN RIGHT(val, 1) = '.' THEN LEFT(val, LEN(val)-1)
ELSE val
END AS val
FROM
y;