2017-06-21 67 views
2

我一直在使用MAX和LPAD产生这个这个值插入分隔符字符串中的字段值在MySQL

结果: enter image description here

我想是什么把一个破折号就像每3号之后000-000-002,但我不知道该怎么办。请帮帮我。

谢谢先进!

+0

其后端语言使用? –

+0

我正在使用php和mysql –

+0

该字段是什么数据类型? – FMashiro

回答

2

使用php wordwrap()函数在字符数之后放置一个特定字符。当函数达到特定长度时,它会将一个字符串包装到新行中。

$output = wordwrap($orNumber,3,'-',true); 

注:此功能可以在一行的开头留空格。所以,你必须修剪你的数据删除空格

您可以检查mannual这里PHP wordwrap()

+0

我想操纵它在我的查询..有可能吗? –

+0

我建议,你应该从你的PHP代码只为动态长度的字符串 –

+0

谢谢老兄生病使用你的建议,使其动态 –

1

的MySQL:

set @var ='000000002'; 
select CONCAT_WS('-', SUBSTR(@var , 1, 3), SUBSTR(@var, 4,3), SUBSTR(@var, 7)) 

这将只接受VARCHAR。对于int值,以0开头的数字不会给出正确的错误。因此建议在PHP端处理。

1
set @chr = '000000002'; 

select @chr, 
     concat(substring(@chr,1,3),'-',substring(@chr,4,3),'-',substring(@chr,7,9)) hyphenated 

结果

+-----------+-------------+ 
| @chr  | hyphenated | 
+-----------+-------------+ 
| 000000002 | 000-000-002 | 
+-----------+-------------+ 
1 row in set (0.00 sec) 
1

如果长度总是固定,您可以使用LEFT(), MID()RIGHT()

update TABLE_NAME set orNumber = CONCAT(LEFT(orNumber, 3), '-' , MID(orNumber, 4, 3), '-' ,RIGHT(orNumber, 3)) 

发现你更多的docs