Sql 我有一个移动列,数据格式为91-98-91254***我想在3个单独的列中显示数据,用“-”分隔

Sql 我有一个移动列,数据格式为91-98-91254***我想在3个单独的列中显示数据,用“-”分隔,sql,sql-server,tsql,Sql,Sql Server,Tsql,该查询删除了-但之后我想在3个不同的列中显示每个集合`在此处输入代码' SELECT SUBSTRING(RIGHT(REPLACE(mobile,'-',''),10),1,3) + ' ' + SUBSTRING(RIGHT(REPLACE(mobile,'-',''),10),4,3) + ' ' + SUBSTRING(RIGHT(REPLACE(mobile,'-',''),10),7,4) FROM candidate_jitendra 只需在选择列表中

该查询删除了-但之后我想在3个不同的列中显示每个集合`在此处输入代码'

SELECT SUBSTRING(RIGHT(REPLACE(mobile,'-',''),10),1,3) + ' ' +
       SUBSTRING(RIGHT(REPLACE(mobile,'-',''),10),4,3) + ' ' +
       SUBSTRING(RIGHT(REPLACE(mobile,'-',''),10),7,4)
FROM candidate_jitendra

只需在选择列表中将每个数字项单独列出来:


这是动态访问字符串,也不是任何核心位置

Declare @t table (id int, name  varchar(50))

insert into @t (id,name) values( 1    ,'99-98-91254')
insert into @t (id,name) values( 2    ,'99-89-8681')
insert into @t (id,name) values( 3    ,'87')
insert into @t (id,name) values( 4    ,'786-32')
insert into @t (id,name) values( 5    ,'79-45-4')

;WITH Split_Names (Name, xmlname)
AS
(
    SELECT 
    Name,
    CONVERT(XML,'<Names><name>'  
    + REPLACE(Name,'-', '</name><name>') + '</name></Names>') AS xmlname
      FROM @t
)

 SELECT       
 xmlname.value('/Names[1]/name[1]','varchar(100)') AS first_name,    
 xmlname.value('/Names[1]/name[2]','varchar(100)') AS last_name,
 xmlname.value('/Names[1]/name[3]','varchar(100)') AS third_name --You can add as you want
 FROM Split_Names        
Declare @t table (id int, name  varchar(50))

insert into @t (id,name) values( 1    ,'99-98-91254')
insert into @t (id,name) values( 2    ,'99-89-8681')
insert into @t (id,name) values( 3    ,'87')
insert into @t (id,name) values( 4    ,'786-32')
insert into @t (id,name) values( 5    ,'79-45-4')

;WITH Split_Names (Name, xmlname)
AS
(
    SELECT 
    Name,
    CONVERT(XML,'<Names><name>'  
    + REPLACE(Name,'-', '</name><name>') + '</name></Names>') AS xmlname
      FROM @t
)

 SELECT       
 xmlname.value('/Names[1]/name[1]','varchar(100)') AS first_name,    
 xmlname.value('/Names[1]/name[2]','varchar(100)') AS last_name,
 xmlname.value('/Names[1]/name[3]','varchar(100)') AS third_name --You can add as you want
 FROM Split_Names