declare @s as varchar(200)
set @s='AA21_P1_12345678'我要得到其中P1子字符串,@s字符串可能形式如下
AA1_P1_12345678
AA1_P12_12345678
AA12_P12_1234
AA1_P12_12349995678
规则是第一个下划线前面可能有3或4个字符,第2个下划线后面可能有若干个未知数木的字符
P后面可能有1或2位字符请帮忙
set @s='AA21_P1_12345678'我要得到其中P1子字符串,@s字符串可能形式如下
AA1_P1_12345678
AA1_P12_12345678
AA12_P12_1234
AA1_P12_12349995678
规则是第一个下划线前面可能有3或4个字符,第2个下划线后面可能有若干个未知数木的字符
P后面可能有1或2位字符请帮忙
CHARINDEX('-',STUFF(@S,1,CHARINDEX('-',@S),''))-1)
set @s='AA21_P1_12345678'SELECT SUBSTRING(STUFF(@S,1,CHARINDEX('_',@S),''),1,CHARINDEX('_',STUFF(@S,1,CHARINDEX('_',@S),''))-1)P1(所影响的行数为 1 行)
print substring(@s,charindex('_',@s)+1,charindex('_',@s,charindex('_',@s)+1)-charindex('_',@s)-1)set @s='AA1_P12_12345678'
print substring(@s,charindex('_',@s)+1,charindex('_',@s,charindex('_',@s)+1)-charindex('_',@s)-1)set @s='AA12_P12_1234'
print substring(@s,charindex('_',@s)+1,charindex('_',@s,charindex('_',@s)+1)-charindex('_',@s)-1)set @s='AA1_P12_12349995678'
print substring(@s,charindex('_',@s)+1,charindex('_',@s,charindex('_',@s)+1)-charindex('_',@s)-1)/*
P1
P12
P12
P12
*/
就是说没有2个下划线,以上运算错误,我希望这种情况返回空字符串,请问如何写?