SQL Server - 如何在字符串中间添加1个或多个特定字符?

时间:2017-10-21 00:10:58

标签: sql sql-server tsql ssms

晚安,伙计们。 问题非常明确:我需要在字符串中间添加2个特定字符。

示例:

(现在的方式)

ID

12345678    
23456789    
34567891    
45678912

(我需要的方式)

ID

12-34567-8    
23-45678-9    
34-56789-1    
45-67891-2

我尝试使用STUFFCONCAT,但没有骰子。

2 个答案:

答案 0 :(得分:4)

如果2012 +

,您可以使用STUFF甚至格式()

以下假设ID不是INT。

示例

Declare @YourTable Table ([ID] varchar(50))
Insert Into @YourTable Values 
 (12345678)
,(23456789)
,(34567891)
,(45678912)

Select * 
      ,ViaFormat = format(cast(ID as int),'00-00000-0')
      ,ViaStuff  = stuff(stuff(ID,8,0,'-'),3,0,'-')
 From @YourTable

<强>返回

ID          ViaFormat   ViaStuff
12345678    12-34567-8  12-34567-8
23456789    23-45678-9  23-45678-9
34567891    34-56789-1  34-56789-1
45678912    45-67891-2  45-67891-2

答案 1 :(得分:0)

@John Cappeletti感谢您的回答!我无法解释原因,但似乎我的SSMS(SQL Server 2008 R2)不喜欢按顺序执行2个STUFF。把它们分成2个句子,然后......解决了!

对于在我提问时造成的任何不便,我们深表歉意。