从字符串中删除前导0和字母数字值

时间:2019-11-08 18:43:08

标签: sql sql-server

我在A1234,B0045,P0123列中有值 我需要从字符串中删除字符并以0开头。

我尝试了几件事,我创建了一个函数来处理此问题,并且我正在使用正则表达式。

PATINDEX('%[^0-9]%', @strText)

我希望结果存储在下面的列中

A1234 -> 1234
B0045 -> 45 
P0123 -> 123

请提出建议

2 个答案:

答案 0 :(得分:2)

您的模式是错误的。
试试这个:

DECLARE @strText VARCHAR(20) = 'B0045';
SELECT SUBSTRING(@strText, PATINDEX('%[1-9]%', @strText), LEN(@strText)) AS result

请参见demo
如果要更新列:

UPDATE tablename
SET col = SUBSTRING(col, PATINDEX('%[1-9]%', col), LEN(col))

答案 1 :(得分:1)

另一种方式:

DECLARE @strText VARCHAR(20) = 'ABC0045';
SELECT STUFF(@strText,1,PATINDEX('%[1-9]%', @strText)-1,'')