2010-07-20 70 views
1

我想在表tab更新列col,其數據是像如下(以逗號分隔,用的標題逗號):如何在MySQL中編寫這種SQL?

,test,oh,whatever,...., 

這可能太長顯示,我怎麼可以更新列,因此那隻剩下第一個10字了?

+2

第一修正你的架構。不要在數據庫中存儲逗號分隔值。 閱讀正常化。 – Naktibalda 2010-07-20 10:02:26

+0

@Naktibalda你不知道這些值是否可以被正常化。它們可以是任意字符串。 – 2010-07-20 10:07:39

+0

@Pekka:如果他們只是字符串,就沒有必要把它們當作單獨的單詞。我同意@Naktibalda,即這違反了第一範式(1NF),它要求標量數據類型。考慮到這個NFNF設計在SO上產生了一個問題,因爲SQL語言缺乏使用多值數據的操作符,因爲它假定所有數據類型都是標量。使用正確的工具進行這項工作;) – onedaywhen 2010-07-20 10:31:47

回答

2

您正在尋找substring_index

UPDATE table 
SET column = SUBSTRING_INDEX(column, ',', 11) 

(運行之前做檢查與選擇您的更新)

0

不是您的問題的答案,但我會建議在應用程序級別上做這樣的事情,而不是在數據庫中。

你不是說你在用什麼語言。在PHP中,這將是wordwrap函數的一項工作。它能夠在正確的位置智能地切斷字符串。

或者,將完整的字符串存儲在數據庫中,並在輸出時進行剪切,而不是一個選項?

+0

不,它是用於開發環境,數據混亂。 – wamp 2010-07-20 10:00:48