日期:2014-05-19  浏览次数:20753 次

看看SQL又没有这样的功能?
我现在要对传过来的变量作处理,传递过来的变量为:字符串+数字
但是我想取出其中的数字,但是字符串位数不固定,在SQL中有没有这样的只取数字的功能,比如,传参数 "AAA12 ",只取到12,关键是前面字符串位数不固定

------解决方案--------------------
字符串中如果没有数字,倒是可以做到
只能自己写,没有现成的
------解决方案--------------------
declare @str varchar(100)
set @str= 'AAA12 '
select right(@str, len(@str)-patindex( '%[0-9]% ', @str)+1)
--result
12

------解决方案--------------------
declare @SQL_ALL CHAR(255)
declare @SQL_CHAR CHAR(255)
declare @SQL_INT CHAR(255)
declare @SQL_LEN INT
declare @INT_LEN INT

select @SQL_ALL= 'AA121334A16552 '
SELECT @SQL_LEN=len(@SQL_ALL)
select @INT_LEN=1
while SUBSTRING(@SQL_ALL,@SQL_LEN-@INT_LEN,1) BETWEEN '1 ' AND '9 '
SELECT @INT_LEN=@INT_LEN+1

SELECT RIGHT(RTRIM(@SQL_ALL),@INT_LEN)

--------------
16552
------解决方案--------------------
1、字符串中间没有数字,按照marco08(天道酬勤) 的方法比较简单
2、如果字符串中间可能有数字,就要从右边开始判断