代码之家  ›  专栏  ›  技术社区  ›  GordyII

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

  •  1
  • GordyII  · 技术社区  · 16 年前

    我使用的是SQLServer2005,我想提取字符串的alpha部分。

    ABC123 ,我想 ABC

    AB1234 ,我想 AB . 等等等等。

    最简单的方法是什么?

    4 回复  |  直到 16 年前
        1
  •  1
  •   Jeff Moden    15 年前

    总是字母然后数字,即XYZ123或XZ321等GordyII Mar 2 '10点26分

     SELECT LEFT(YourStringColumn, PATINDEX('%[0-9]%',YourStringColumn)-1)
       FROM dbo.YourTable
    
        2
  •  1
  •   David    16 年前

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

        3
  •  1
  •   KM.    16 年前

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

    DECLARE @String  varchar(100)
    SET @String='ABC 123'
    
    SELECT LEFT(@String,LEN(@String)-CHARINDEX(' ',@String))
    

    -------------------
    ABC
    
    (1 row(s) affected)
    

    编辑

    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)
    
        4
  •  0
  •   Andrew Savinykh    16 年前

    您也可以考虑在SQL中做这件事,但是如果在您的方案中是可能的话,可以在别处做这件事。如果您解释了您使用的是哪种数据,它们是如何进入您的sql数据库的,以及它们是什么和如何使用的,那么就有可能提出更好的替代方案。

    推荐文章