gpt4 book ai didi

sql-server - 如何在t-sql中提取字符串的一部分

转载 作者:行者123 更新时间:2023-12-02 22:13:45 25 4
gpt4 key购买 nike

如果我有以下 nvarchar 变量 - BTA200,如何从中提取 BTA?

另外,如果我有不同的长度,例如 BTA50、BTA030,我怎样才能只提取数字部分?

最佳答案

我会推荐 PatIndex 和 Left 的组合。经过精心构建,您可以编写一个始终有效的查询,无论您的数据是什么样的。

例如:

Declare @Temp Table(Data VarChar(20))

Insert Into @Temp Values('BTA200')
Insert Into @Temp Values('BTA50')
Insert Into @Temp Values('BTA030')
Insert Into @Temp Values('BTA')
Insert Into @Temp Values('123')
Insert Into @Temp Values('X999')

Select Data, Left(Data, PatIndex('%[0-9]%', Data + '1') - 1)
From @Temp

PatIndex 将查找 0-9 范围内的第一个字符,并返回其字符位置,您可以将其与 LEFT 函数一起使用来提取正确的数据。请注意,PatIndex 实际上使用的是 Data + '1'。这可以保护我们免受未找到数字的数据的影响。如果没有数字,PatIndex 将返回 0。在这种情况下,LEFT 函数会出错,因为我们使用的是 Left(Data, PatIndex - 1)。当 PatIndex 返回 0 时,我们最终会得到 Left(Data, -1),它返回一个错误。

仍有可能导致失败。要获得完整的解释,我鼓励您阅读:

Extracting numbers with SQL Server

那篇文章展示了如何从字符串中获取数字。就您而言,您希望获得字母字符。但是,该过程非常相似,您可能可以从中学到一些有用的东西。

关于sql-server - 如何在t-sql中提取字符串的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/375133/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com