2017-06-21 70 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