我一直在尝试从表的列中删除尾随零。当我使用 case 语句(在打开标志时删除零,并在关闭标志时保留它们)时,它无法正常工作。它不认识国旗。@Tim Biegeleisen 帮助我解释了正在发生的隐式转换。
我想互换地删除或保留零。例如,当标志打开时,我希望 0.091000 为 0.091;当标志关闭时,我希望它是相同的 0.091000。例如,这可以正常检索删除零并分别保留零。
CREATE TABLE #tablea
(item CHAR(2), name VARCHAR(10), amount DECIMAL(9,2))
INSERT INTO #tablea
VALUES ('AB', 'D1', 1.10),
('AB', 'D2', 1.00),
('AB', 'D3', 0.90),
('AB', 'D4', 0.09)
SELECT CAST(CAST(amount AS DECIMAL(6,2)) AS VARCHAR(max)), cast(CAST(amount
AS decimal(6,2)) as float)
FROM #tablea
它显示两列:一列带零,一列不带零。
但是,它根本不会删除表中的零。它根本不认识国旗。这是一个例子:
DECLARE @flag INT = 1
SELECT CASE WHEN @flag = 1
THEN CAST(CAST(amount AS DECIMAL(6,2)) AS VARCHAR(max))
ELSE amount END
FROM #tablea
谁能帮我这个?