sqlserver:如何将这个字符串‘16-90’获取两个int,一个是16,一个是90

我的想法是:先找到字符串中的位置-,然后截取前后的数字。
查找连字符位置:CHARINDEX('-','16-90')快捷方式:SUBSTRING('16-90',0,CHARINDEX('-','16-90'))之前的数字和SUBSTRING('16)之后的数字-90',CHARINDEX('-','16-90')+1,len('16-90'))结合强制类型转换和cast函数需要自己调试

sqlserver中如何进行截取字符串然后再计算?

oracle的方法看起来是这样的,但是不确定sqlserver是否不支持相应的功能。
如果我尝试selectreplace(t.number,'m','')numfromtable1t//removem我得到100*200。
但这是varchar类型不是number(1)instr(replace(t.number,'m',''),'*',1)从100*200的第一位数字到'*'部分的长度。
注意:这是长度,而不是'*'从第一个位置开始的数字100substr(num,1,instr(replace(t.number,'m',''),'*',1)-1)截取前一个。
即取出100(2)instr(replace(t.number,'m').,''),'*',-1)从100*200的最后一位截去'*'的长度。
substr(num,-1,instr(replace(t.number,'m',''),'*',-1)-1)取出200,然后(1)*(2)(substr将num替换为Replace(t.number,)'m',''))这是想法。
你只需要组织它。

截取指定字符串的前几位,我想从字符串350X01220截取X前面的数和后面的数要怎么写sqlserver?,

DECLARE@POTUNDECLARE@STRALLVARCHAR(20),@STR1VARCHAR(10),@STR2VARCHAR(10)SET@STRALL='350X01220'--如果在To中查表请移至对应字段SELECT@POT=CHARINDEX('X',@STRALL)--定位函数SELECT@STR1=LEFT(@STRALL,@POT-1)SELECT@STR2=RIGHT(@STRALL,@POT+1)SELECT@STR1ASA1,@STR2ASA2--输出SELECT

This以上写的比较繁琐,方便大家理解。
下面是一种方便的写法:

DECLARE@STRALL。
VARCHAR(20)--SET@STRALL='350X01220'----请根据您的实际情况修改上面两句,例如如果您要检查表的字段,则不需要这两个上面的句子-直接将以下@STRALLSELECTLEFT(@STRALL,CHARINDEX('X',@STRALL)-1)ASA1,RIGHT替换为字段名称(@STRALL,CHARINDEX('X',@STRALL)+1)ASA2