我正在使用SQL Server 2005,我想提取字符串的alpha部分。
即
从ABC123
开始,我想获得ABC
从AB1234
开始,我想获得AB
。
等等。
最简单的方法是什么?
答案 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数据库以及使用它们的方式和方式,可能会建议一个更好的选择。