MS SQL删除Number之前的所有内容

时间:2017-11-24 15:23:40

标签: sql sql-server sql-server-2016

我试图写一些删除所有内容的代码在句子中出现的第一个数字之后。

因此,如果该字段是E1W

我想要返回E,如果它是EP4则相同,只需返回EP。我已经尝试了各种子串,charindex和patindexs put无法正确使用。

2 个答案:

答案 0 :(得分:2)

PATINDEX有帮助:

SELECT Left(field, PatIndex('%[0-9]%', field + '1') - 1)

如果字段中没有数字,field + '1'可以避免错误。

答案 1 :(得分:0)

您可以使用PATINDEX

SELECT *,
       LEFT(s,IIF(PATINDEX('%[0-9]%',s)>0,PATINDEX('%[0-9]%',s)-1,0))
FROM (SELECT 'E1W' AS s 
      UNION SELECT 'EP4' 
      UNION SELECT 'ABC') z;

<强> Rextester Demo