Sql 从字母数字字符串中删除字符并更新列中的数值

Sql 从字母数字字符串中删除字符并更新列中的数值,sql,sql-server,string,Sql,Sql Server,String,我有一列包含字母数字值,比如A1234、5678Q。我想从字符串中删除字符,只想更新剩余的数值 我尝试使用SUBSTR和创建函数,但它只给了我字符值 我想删除字符并用数字值更新列,例如A1234变为1234。假设只有一个非数字字符,您可以使用: SELECT val , CASE WHEN PATINDEX('%[^0-9]%', val) > 0 THEN STUFF(val, PATINDEX('%[^0-9]%', val), 1, '')

我有一列包含字母数字值,比如A1234、5678Q。我想从字符串中删除字符,只想更新剩余的数值

我尝试使用SUBSTR和创建函数,但它只给了我字符值


我想删除字符并用数字值更新列,例如A1234变为1234。

假设只有一个非数字字符,您可以使用:

SELECT val
     , CASE
           WHEN PATINDEX('%[^0-9]%', val) > 0 THEN STUFF(val, PATINDEX('%[^0-9]%', val), 1, '')
           ELSE val
       END AS val_fixed
FROM (VALUES
    ('A1234'),
    ('5678Q'),
    ('12345')
) AS tests(val)

是否只有一个非十进制字符?是,只有一个字符