Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQLServer——如何在字符串中间添加1个或更多个特定字符?_Sql_Sql Server_Tsql_Ssms - Fatal编程技术网

SQLServer——如何在字符串中间添加1个或更多个特定字符?

SQLServer——如何在字符串中间添加1个或更多个特定字符?,sql,sql-server,tsql,ssms,Sql,Sql Server,Tsql,Ssms,晚安,各位。 问题很清楚:我需要在字符串中间添加2个特定字符。 例如: (现在的情况) (我需要的方式) 我试过使用STUFF和CONCAT,但没有骰子。如果需要,您可以使用STUFF甚至Format()+ 以下假设ID不是INT 示例 Declare @YourTable Table ([ID] varchar(50)) Insert Into @YourTable Values (12345678) ,(23456789) ,(34567891) ,(45678912) Select

晚安,各位。 问题很清楚:我需要在字符串中间添加2个特定字符。

例如:

(现在的情况)

(我需要的方式)


我试过使用
STUFF
CONCAT
,但没有骰子。

如果需要,您可以使用STUFF甚至Format()+

以下假设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

如果需要,您可以使用STUFF甚至Format()+

以下假设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

@约翰·卡佩莱蒂谢谢你的回答!我无法解释原因,但我的SSM(SQLServer2008R2)似乎不喜欢按顺序执行两件事情。把他们分成两句话,瞧…解决了


很抱歉在回答我的问题时给您带来不便。

@John Cappeleti谢谢您的回答!我无法解释原因,但我的SSM(SQLServer2008R2)似乎不喜欢按顺序执行两件事情。把他们分成两句话,瞧…解决了


很抱歉在回答我的问题时给您带来不便。

您能给我们看一下
资料
CONCAT
代码吗?谢谢您的回答。我一直在尝试:DECLARE@String NVARCHAR(30)='20952634500'SELECT STUFF(STUFF(@String,3,0,'-')、11,1,'-'))我的问题是我有大约300行要编辑/添加这个特殊字符。有没有一种“自动”的方法可以做到这一点?你能给我们看一下
东西
CONCAT
代码吗?谢谢你的回答。我一直在尝试:DECLARE@String NVARCHAR(30)='20952634500'SELECT STUFF(STUFF(@String,3,0,'-')、11,1,'-'))我的问题是我有大约300行要编辑/添加这个特殊字符。有没有一种“自动”的方法可以做到这一点?