我碰到SQL2005數據庫中的一些null
字段。SQL轉換文本字段
一些報告Null
和其他有像1.00
或713.00
值。
我想要一個防彈的方式來將'空'轉換爲0,將'1.00'和'713.00'的值轉換爲Money
類型。
我碰到SQL2005數據庫中的一些null
字段。SQL轉換文本字段
一些報告Null
和其他有像1.00
或713.00
值。
我想要一個防彈的方式來將'空'轉換爲0,將'1.00'和'713.00'的值轉換爲Money
類型。
CREATE TABLE dbo.Test_Text_Convert
(
my_string TEXT NULL
)
GO
INSERT INTO dbo.Test_Text_Convert VALUES (NULL)
INSERT INTO dbo.Test_Text_Convert VALUES ('7.10')
INSERT INTO dbo.Test_Text_Convert VALUES ('xxx')
INSERT INTO dbo.Test_Text_Convert VALUES ('$20.20')
INSERT INTO dbo.Test_Text_Convert VALUES ('20.2020')
GO
SELECT
CASE
WHEN ISNUMERIC(CAST(my_string AS VARCHAR(MAX))) = 1
THEN CAST(ISNULL(CAST(my_string AS VARCHAR(MAX)), '0') AS MONEY)
ELSE 0
END
FROM
dbo.Test_Text_Convert
GO
我將無效字符串設置爲0,但您可以輕鬆更改該行爲。
您可以從null
通過3210功能轉換:
coalesce(a, b) //returns b if a is null, a otherwise
我不知道性能將是什麼樣的,但在2005年推出了varchar(MAX)
和nvarchar(MAX)
數據類型(其中包括像varbinary(MAX)
。這是真正的VARCHAR處理和nvarchars,並且可以在任何地方使用,他們可以(像轉換),但也有Text
和Image
領域的能力。事實上,Text
和Image
類型實際上棄用,因此,展望未來我們建議您使用新的類型。
話雖這麼說,你可以只使用這個:
convert(Money, coalesce(text_column_name, 0))
工作完美..謝謝。 – madcolor 2009-07-15 18:00:35