我有一个varchar列,可以是money或decimal数据类型。存储的样本值为500& .02为每个例子。
如何测试是否为Money或小数,如果是小数,则在前面添加前导0,结果为0.02?
提前致谢
答案 0 :(得分:0)
以下是将所有数据转换为一致显示为Money数据类型的方法。
DECLARE @BadDesign TABLE (
BadDataTyping VARCHAR(100)
)
INSERT INTO @BadDesign (BadDataTyping) VALUES ('500')
INSERT INTO @BadDesign (BadDataTyping) VALUES ('.02')
SELECT * FROM @BadDesign
SELECT CONVERT(MONEY,BadDataTyping) FROM @BadDesign
UPDATE @BadDesign
SET BadDataTyping=CONVERT(MONEY,BadDataTyping)
SELECT * FROM @BadDesign
答案 1 :(得分:0)
也许这会对你有所帮助:
SELECT REPLACE(REPLACE('500 & .02','&',''),' ','')::DECIMAL(15,2); -- result: 500.02 (decimal)
答案 2 :(得分:0)
也许这就是你要找的东西?它需要带有前导“。”的所有值。并添加“0”。如果你想以不同的方式识别你的十进制值,可以调整第三行中的搜索模式。
SELECT
CASE TRUE
WHEN LEFT( col1, 1 ) = "." THEN CONCAT('0', col1 )
ELSE col1
END AS col1_formatted
FROM tab1