2009-02-13 15 views
1

假設我有一個德國數字格式「1,00」的數字,在en-US語言環境中等於1.0。如何在MS SQL Server中將具有本地化數字格式的文本轉換爲數字?

是否有內置的方式將T-SQL中的文本轉換爲相應的編號?看起來CONVERT和CAST只接受帶''的數字。作爲小數點分隔符,我看不出別的方式告訴他們。

我在考慮簡單地用'替換',''。但是如果我的德文數字是像「1.000,00」這樣的分隔符,這會變得很難看。

檢索「錯誤」SQL結果後執行轉換不是一個選項。

+0

您是否知道數字_will_是「德語」格式,還是它可能是? – AnthonyWJones 2009-02-13 11:12:10

+0

我很確定它總是會用德文格式。是的,我可以編寫一個函數來解析格式,但我希望(d)有一種像.NET Framework一樣的內置方式。 – VVS 2009-02-13 12:20:46

回答

1

如果你想在SQL Server中這樣做,那麼你將不得不創建一個CLR存儲過程/用戶定義的函數,它將字符串作爲參數並返回所需的數字類型。您可能還需要一個參數,指示您可能想要使用哪些區域名稱(例如en-US)來指示要用於確定解析模式的區域性。

然後,在代碼中,您將調用Double/Decimal/Int32上的TryParse方法,並使用適當的CultureInfo指示解析模式。您可以循環瀏覽一堆,或使用其他信息來確定正確的模式。

0

我會建議你在應用程序級別執行它,因爲應用程序知道該區域設置。你使用什麼語言/框架?

相關問題