それほどエレガントではありませんが、すべての場合に機能します。
CONVERT(float、LEFT(CONVERT(nvarchar、23.0 / 12.0)、CHARINDEX('。'、CONVERT(nvarchar、23.0 / 12.0))+ 2))を合計として選択します
スカラー関数
-- Description: Truncate instead of rounding a float
-- SELECT dbo.TruncateNumber(23.0/12.0,2)
-- =============================================
CREATE FUNCTION TruncateNumber
(
-- Add the parameters for the function here
@inFloat float,
@numDecimals smallint
)
RETURNS float
AS
BEGIN
IF (@numDecimals < 0)
BEGIN
SET @numDecimals = 0
END
-- Declare the return variable here
RETURN CONVERT(float,LEFT(CONVERT(nvarchar, @inFloat),CHARINDEX('.',CONVERT(nvarchar, @inFloat)) + @numDecimals))
END
GO