如何在两个单词之间找到字符串的一部分?

时间:2016-04-20 16:00:05

标签: sql sql-server

我想从我的字段description

中获取部分文字

有人可以提供一些建议吗?

整个字符串是'Version100][BuildNumber:666][SubBuild:000]',内部版本号是我要挑出来的(但数字可能会改变)。

我已尝试SUBSTRINGCHARINDEX,但我似乎无法弄明白。

我一直在谷歌搜索大约30分钟,我似乎无法解决它。

4 个答案:

答案 0 :(得分:1)

不久,但你可以做到这一点。

List<DateTime> l = new List<DateTime>();
DateTime x = l.DefaultIfEmpty().Max();
x.Dump();

var y = new DateTime();
y.Dump();

l.DefaultIfEmpty().Dump();

答案 1 :(得分:0)

希望此查询可以返回您的预期结果,而无需对内部版本号进行硬编码:

DECLARE @Description AS VARCHAR (500) = 'Version100][BuildNumber:6663211][SubBuild:000]';
DECLARE @BeforeString AS VARCHAR (100) = '[BuildNumber:';
DECLARE @BeforeStringPosition AS INT = CHARINDEX(@BeforeString, @Description);
SELECT SUBSTRING(@Description, @BeforeStringPosition + LEN(@BeforeString) , CHARINDEX('][SubBuild', @Description) - @BeforeStringPosition - LEN(@BeforeString));

答案 2 :(得分:0)

我还没有真正测试过这个(数字偏移可能有点偏,但你可以调整它们),但假设字符串格式总是相同的,那么无论数字位数如何,以下都应该有效在内部版本号。

x - 1

答案 3 :(得分:0)

你可以试试这个:

SELECT SUBSTRING([description],CHARINDEX('BuildNumber:',[description])+12,
    CHARINDEX(']',[description], CHARINDEX('BuildNumber:',[description]))
    -(CHARINDEX('BuildNumber:',[description])+12))
FROM YOURTABLE