SQL Server 2005 - 从字符串中仅剥离Alpha值

时间:2010-03-01 19:19:35

标签: sql-server-2005

我正在使用SQL Server 2005,我想提取字符串的alpha部分。

ABC123开始,我想获得ABC

AB1234开始,我想获得AB。 等等。

最简单的方法是什么?

4 个答案:

答案 0 :(得分:1)

您可以创建一个用户定义的函数,该函数将遍历字符并构建一个字符为字母的新字符串。

答案 1 :(得分:1)

如果字母和数字之间总是有空格,请尝试:

DECLARE @String  varchar(100)
SET @String='ABC 123'

SELECT LEFT(@String,LEN(@String)-CHARINDEX(' ',@String))

输出

-------------------
ABC

(1 row(s) affected)
OP评论后

编辑,假定数字前没有空格:

DECLARE @String  varchar(100)
SET @String='ABCD123'

;with Numbers AS
(
    SELECT 1 AS Number,ISNUMERIC(SUBSTRING(@String,1,1)) AS Digit
    UNION ALL
    SELECT Number+1,ISNUMERIC(SUBSTRING(@String,Number+1,1)) AS Digit
        FROM Numbers
    WHERE Number<LEN(@String)
)
SELECT LEFT(@String,MAX(Number)) FROM Numbers WHERE Digit=0
--OPTION (MAXRECURSION n)  --if the string is longer than 100 characters uncomment this and set "n" to the string length

输出:

-------------------
ABCD

(1 row(s) affected)

答案 2 :(得分:1)

  

总是字母然后是数字,即XYZ123或XZ321等 - GordyII Mar 2   '10在0:26

我知道这是一个老帖子但是......如果上面的引用是真的,那么这很容易......

 SELECT LEFT(YourStringColumn, PATINDEX('%[0-9]%',YourStringColumn)-1)
   FROM dbo.YourTable

答案 3 :(得分:0)

如果在您的方案中可行,您也可以考虑不在SQL中执行此操作,而在其他位置执行此操作。如果你解释一下你使用的是什么类型的数据,他们如何进入你的sql数据库以及使用它们的方式和方式,可能会建议一个更好的选择。