2013-02-26 67 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