SQL Server仅显示带-不工作的文本中的选定文本



在原始数据库中,列的行文本类似于PA-PB-PC,并且我希望在执行选择查询时只选择PB。

对此有什么建议吗?

Select Section 
from Department  

预期的解决方案是在执行选择查询时仅显示中间文本"PB">

您可以使用以下几种方法:

样本

declare @var varchar(64) = 'PA-PB-PC '
select 
left(substring(@var,charindex('-',@var) + 1 ,99),charindex('-',substring(@var,charindex('-',@var) + 1 ,99)) - 1)

所以对于你的专栏。。。

select 
Section = left(substring(Section,charindex('-',Section) + 1 ,99),charindex('-',substring(Section,charindex('-',Section) + 1 ,99)) - 1)
from Department  

这是基于您想要显示中间文本的语句,您的示例有3个段。

另一种更简单的方法是使用parsename

declare @var varchar(64) = 'PA-PB-PC '
select 
Section = parsename(replace(@var,'-','.'),2)

因此,对于您的桌子:

select 
Section = isnull(parsename(replace(Section,'-','.'),2),Section)
from Department  

最新更新