2012-03-15 66 views
0

我在MySQL表中的字段中有一個字符串。MySQL:字段中的空白字符實際上不是空白。它是什麼?

它是VARCHAR,表編碼是utf8。

領域的內容是one two three

如果我運行select * from table where content like '%one two%';返回的行。
但是,如果我運行update table set content = REPLACE(content, " ", "+;;");那麼結果是one two+;;three

那麼,這是什麼第一個「空白」字符?

我在Ruby on Rails應用程序中使用此表。 Ruby不會將它識別爲空白字符。 (例如,如果我將字符串拆分爲「」,則不會拆分到第一個空格上)

任何想法發生了什麼?

謝謝。

+0

在Rails控制檯中將該字符串拉出數據庫,並查看'your_string.bytes'。 – 2012-03-15 17:47:32

+0

將「壞」空間轉換爲bytes.to_a爲[194,160]。 「好」的空間是[32] – johnnycakes 2012-03-15 18:03:24

+0

這就是Arjan正在討論的0xC2 0xA0。 – 2012-03-15 18:23:52

回答

2

它可能是一個不間斷的空格字符(UTF8中的2個字節:0xC2 0xA0)。這不是一個空間,將它與空間進行比較將會產生錯誤。

您可以更新您的表像這樣:

UPDATE table SET column = REPLACE(column, ' ', ' '); 

請注意,您應該確保第一個「空間」實際上是要替換的字符。

+0

你知道一個快速/簡單的方法來更新我在MySQL中的字段來替換一個固定空間的非破壞空間嗎? – johnnycakes 2012-03-15 18:03:57

+0

@johnnycakes,看到我更新的答案。 – Arjan 2012-03-15 18:15:39

+0

唯一的問題是它不工作..它將取代1與0但沒有空間破碎的空間 – 2014-07-24 15:44:17

相關問題