添加到此论坛响应背后的逻辑,我如何选择字符串中具有特定尾随字符集的第一个int ?换句话说,我想从"这个东西长15英寸"中提取"15英寸"。
我试过以下方法(基于答案)…
SELECT LEFT(subsrt, PATINDEX('%[^0-9]%', subsrt + 't') - 1)
FROM (
SELECT subsrt = SUBSTRING(string, pos, LEN(string))
FROM (
SELECT string, pos = PATINDEX('%[0-9] in%', string)
FROM @temp
) d
) t
…但它只会从示例字符串中提取"5英寸",而不是"15英寸"。因此,我不仅需要整个int值(这个脚本的最初目的是在字符串中找到第一个完整的int值),而且还需要字符串中"in"前面的整个int值。
我知道这是一个潜在的重复帖子,一旦我获得足够的声誉,我会把这篇文章作为评论添加到原始论坛的回答中,然后如果需要的话删除这篇文章。如果你的例子给你"5 in",那么添加额外的"[0-9]"
DECLARE @temp TABLE
(
string NVARCHAR(50)
)
INSERT INTO @temp (string)
VALUES
('bob this thing is 15 in long!')
SELECT SUBSTRING(string, pos, 5)
FROM (
SELECT string, pos = PATINDEX('%[0-9][0-9] in%', string)
FROM @temp
) d