2013-02-26 71 views
0

需要更新我們的數據庫中的一列。一列最多可以有7組數字,由它們之間的空格隔開。 like選擇的SQL循環

3548 132 760 2348 
123 346 
37 982 439 

我需要更新這些列,如下所示。

3548 132 760 2348 0 0 0 
123 346 0 0 0 0 0 
37 982 439 0 0 0 

即即將滿滿的7組數字。將4臺改爲7臺。

我可以能夠通過以下

SELECT LENGTH('3548 132 760 2348')-LENGTH(REPLACE('3548 132 760 2348', ' ', '')) + 1 

它返回的套在列中的數字來算的套在列中的數字。 什麼SQL查詢將有助於更新或返回上面給出的值。

+1

正如@Devart建議你應該考慮改變設計以進一步標準化它。 [This](http://stackoverflow.com/questions/15060529/how-to-get-the-count-of-number-of-values-in-a-column)將會對你有所幫助。 – chandimak 2013-02-26 08:07:04

回答

1

您可以使用此查詢 -

SET @str = '548 132 760 2348'; 
SELECT RPAD(@str, LENGTH(@str) + (6 - (LENGTH(@str) - LENGTH(REPLACE(@str, ' ', '')))) * 2,' 0'); 

>548 132 760 2348 0 0 0 

但是,如果這些ID值,那麼我建議你一定要規範數據。

+0

你的解決方案在MySQL中工作正常。謝謝。你有機會知道如何爲teradata做到這一點? – 2013-02-26 08:20:56