首页 > 解决方案 > 如何在第一个重复字符之前提取 SQL 中的部分字符串?

问题描述

我在 SQl 行中有以下混合值。

322600;323800;325000;326200;327400;329200
0;0;0;0;0;0
1184168;1188182;1192196;1196210;1200224;1204238
0;0;0;0;0;0
0;0;0;0;0;0

我只需要在第一个分号之前获取值,即

322600
0
1184168
0
0

我努力了:

,LEFT ([UtilizeProperties],CHARINDEX(';',[CalcTotGrossIncome])-1) 

但我只得到 3 个第一位数字

,SUBSTRING([UtilizeProperties],CHARINDEX(';',[UtilizeProperties])-1,LEN([UtilizeProperties])-CHARINDEX(';',[UtilizeProperties])) 

将我的第一个值设为 0 和

,SUBSTRING([UtilizeProperties],CHARINDEX(';',[UtilizeProperties])+1,LEN([UtilizeProperties])) 

把他们完全带走。

感谢您的善意建议。

我使用 SQL 服务管理工作室

标签: sqlsql-serversubstringpartial

解决方案


LEFT您的第一种方法是正确的,除非您在和中使用不同的列CHARINDEX。像这样改变:

LEFT(UtilizeProperties, NULLIF(CHARINDEX(';', UtilizeProperties), 0) - 1)

推荐阅读