SQL查询/函数仅从结尾删除字母

时间:2015-08-06 12:26:20

标签: sql sql-server sql-server-2008-r2

需要帮助创建一个仅从结尾删除字符(字母)或直到数字出现在右侧的函数。

对于Eg:

select fnStripRightAlpha('ABCD123F') --Should Return 'ABCD123'

select fnStripRightAlpha('PORT123G67KK') --Should Return 'PORT123G67'

select fnStripRightAlpha('123465') --Should Return '123465'

select fnStripRightAlpha('ABCDG') --Should Return ''

saw functions删除了所有字母,但它们无法解决我的目的,因为只有最右边的字符才会被删除。

任何想法?

2 个答案:

答案 0 :(得分:3)

假设您只有字母数字字符,可以PATINDEX使用STUFFREVERSE

<强>查询

SELECT
ISNULL(REVERSE(STUFF(REVERSE(col),1,PATINDEX('%[0-9]%',REVERSE(col)) -1,'')),'') as col
FROM
(
    VALUES('ABCD123F'),('PORT123G67KK'),('123465'),('ABCDG')
) as tab(col)

<强>输出

col
ABCD123
PORT123G67
123465
''

答案 1 :(得分:1)

最简单的方法是

    declare @str varchar(100)
set @str='ABCD123F'
select substring(@str,1,len(@str)-patindex('%[0-9]%',reverse(@str))+1)