如何在SQL Server中提取此特定子字符串?

RJI*_*IGO 11 sql-server substring

我有一个具有特定模式的字符串:

23;chair,red [$3]
Run Code Online (Sandbox Code Playgroud)

即,一个数字后跟一个分号,然后是一个名称,后跟一个左方括号.

假设分号;始终存在且左方括号[始终存在于字符串中,如何在SQL Server查询中(和不包括);[SQL Server查询之间提取文本?谢谢.

Mar*_*arc 21

结合SUBSTRING(),LEFT()CHARINDEX()功能.

SELECT LEFT(SUBSTRING(YOUR_FIELD,
                      CHARINDEX(';', YOUR_FIELD) + 1, 100),
                      CHARINDEX('[', YOUR_FIELD) - 1)
FROM YOUR_TABLE;
Run Code Online (Sandbox Code Playgroud)

这假设您的场长不会超过100,但如果需要,您可以通过使用该LEN()功能使其变得更聪明.我没有打扰,因为那里已经有足够的事情了,我没有一个实例可以测试,所以我只是看着我的括号等等.


小智 5

假设它们始终存在且不属于您的数据,这将起作用:

declare @string varchar(8000) = '23;chair,red [$3]'
select substring(@string, charindex(';', @string) + 1, charindex(' [', @string) - charindex(';', @string) - 1)
Run Code Online (Sandbox Code Playgroud)