2016-07-15 65 views
-1

MySql有一个函数CONCAT_WS,我用它将一个分隔符的多个字段导出到一个字段中。很棒!插入一个分隔符

有多个字段被存储在数据库中查询我有数据,我需要单独提取每个字段,但在每个字段数据需要包括一个分隔符。我可以肯定地进行连接,但是如果我的数据需要多达100个唯一值,则需要一段时间才能进行设置。下面是我正在谈论的一个例子

Stored Data 01020304050607      
End Result 01,02,03,04,05,06,07 

Stored Data 01101213 
End Result 01,10,12,13 

在MySQL中是否有一个函数可以实现上述功能?

+1

然后问题是:为什么你以这种方式存储数据,如果你需要以一种非常不同的格式检索它? – Jocelyn

+0

你将不得不编写一个存储函数来分割它。 –

+0

更好,但是当你拆分它时,不要用CSV保存你的数据。创建新的行。如果您发现自己每天都在使用find_in_set和group_concat来保存数据,那么您可能会做错某些事情。如果是这样,请参见[Junction Tables](http://jackoverflow.com/a/32620163)。对于一对多,而不是多对多,相同的概念。不要保存CSV数据。 – Drew

回答

0

我对mysql并不熟悉,但在正则表达式函数有用之前,我已经看到类似这样的问题。有用户定义的函数可以使用类似Oracle的正则表达式函数,因为它们在mysql中的支持很弱。在这里看到:https://github.com/hholzgra/mysql-udf-regexp

所以你可以做这样的事情:

select trim(TRAILING ',' FROM regexp_replace(your_column, '(.{2})', '\1,')) 
from your_table; 

这增加了一个逗号,然后每隔2字符砍掉最后一个。也许这会给你一些想法。