Jso*_*ham 11 sql t-sql sql-server sql-server-2008
假设我有以下几个字段:
abd738927
jaksm234234
hfk342
ndma0834
jon99322
Run Code Online (Sandbox Code Playgroud)
输入:varchar.
如何仅显示此数值以显示:
738927
234234
342
0834
99322
Run Code Online (Sandbox Code Playgroud)
尝试过子串但是数据的长度不一样,并且由于无法转换,任何想法都无法投射?
Sea*_*ean 16
以下是PATINDEX的示例:
select SUBSTRING(fieldName, PATINDEX('%[0-9]%', fieldName), LEN(fieldName))
Run Code Online (Sandbox Code Playgroud)
这假定(1)字段WILL具有数字,(2)数字全部组合在一起,以及(3)数字后面没有任何后续字符.
仅提取数字(不使用while循环),并检查每个字符以查看是否为数字并将其提取
Declare @s varchar(100),@result varchar(100)
set @s='as4khd0939sdf78'
set @result=''
select
@result=@result+
case when number like '[0-9]' then number else '' end from
(
select substring(@s,number,1) as number from
(
select number from master..spt_values
where type='p' and number between 1 and len(@s)
) as t
) as t
select @result as only_numbers
Run Code Online (Sandbox Code Playgroud)