2011-07-08 14 views
6

如何讓mysql在integer/float字段中理解非英文小數點?在mysql中插入非英文小數點

setLocale(LC_ALL, 'da_DK.ISO-8859-1'); 

如:

0,25 will be inserted as 0 
0.25 will be inserted as 0.25 
+1

爲什麼'0,25'插入零? SQL有一個DECIMAL數據類型,所以我期望值存儲爲'0.25' –

+1

我假設分析器無法處理它,並打破逗號。 – Tremmors

回答

13

你不能這樣做的原因之一是逗號,用於分隔INSERT語句中的字段值。

INSERT INTO a(b,c) VALUES (3,4,5)會不明確。

它應該導致到b=3.4 , c=5b=3 , c=4.5

+1

好的想法。我從來沒有想過*爲什麼* locales不支持數字格式... – gbn

+0

很好的答案。我永遠不會明白,當至少有[4個ASCII碼分隔符](https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text) –

+0

@IvanFerrerVilla那些不可打印的世界衛生組織將痛苦的逗號指定爲事物的分隔符字符,旨在用於文件。 SQL是一種可讀的語言。 –

2

數字不受區域設置(在SQL Server同樣也是如此)。

所以你必須發送爲「0.25」

0

最簡單的我想的辦法是使用包裝爲你的mysql對象,將場景設置成en_US.utf8查詢前後查詢將其返回到da_DK.ISO-8859-1。

它看起來像this做你正在尋找的相反。

-3

你可能想嘗試像REPLACE( '3,1415926', '', '')

+0

這隻有在_exactly_'3,1415926'作爲某個字符串的字符串時纔會起作用,並且必須在您希望更改的任何事件中執行此操作。在我看來幾乎沒有用。 – Werner

+0

這不是問題的解決方案。請再次仔細閱讀問題 –

相關問題