Sql server Sql Server将列拆分

Sql server Sql Server将列拆分,sql-server,string-split,Sql Server,String Split,我有一张桌子。我有一个列City,其中包含(MANGALORE-575001),我需要一个查询来拆分城市和SQL server中的Pincode。如果子字符串表达式,则必须给出起始值和长度,每个城市的起始值和长度可能不同 例如: Mangalore-123456 Kannur-6542 kochi-78954 Goa-12 我需要一个查询,将名称和pincode拆分为两列,如下所示 city Pincode --------- ------- Mangalore 12345

我有一张桌子。我有一个列City,其中包含(MANGALORE-575001),我需要一个查询来拆分城市和SQL server中的Pincode。如果子字符串表达式,则必须给出起始值和长度,每个城市的起始值和长度可能不同

例如:

Mangalore-123456 
Kannur-6542 
kochi-78954 
Goa-12
我需要一个查询,将名称和pincode拆分为两列,如下所示

city      Pincode 
--------- ------- 
Mangalore 123456 
Kannur    6542 
Kochi     78954 
Goa       12
试试这个:

SELECT 
    CASE WHEN CHARINDEX('-',city)>0 THEN SUBSTRING(city,1,CHARINDEX('-',city)-1) 
         ELSE city end City, 
    CASE WHEN CHARINDEX('-',city)>0  THEN SUBSTRING(city,CHARINDEX('-',city)+1,len(city))  
         ELSE NULL END as pincode
FROM Contact_add
city=第2行的列名

select substring('MANGALORE-575001',0,CHARINDEX('-','MANGALORE-575001')), substring('MANGALORE-575001',CHARINDEX('-','MANGALORE-575001')+1,len('MANGALORE-575001'))

它总是“Cityname-6153135”所以是字符串破折号吗?如果是这样的话,你可以得到破折号的索引,一旦你知道了它,就可以使用子字符串,而且如果你问一个问题,总是建议提供更多的样本数据,这样人们就能更好地帮助你。示例Mangalore-123456 Kannur-6542 kochi-78954 Goa-12我想要一个查询,将名称和pincode分成两列,如下面的city pincode---------------Mangalore 123456 Kannur 6542 kochi 78954 Goa 12如果您的所有记录都有city number,那么您可以在'-'@Aju上拆分字符串-请您的问题并添加您的答案示例(请注意,如果要显示表格数据,通常将其格式化为代码(
{}
按钮))可以很好地保持格式。