在原始数据库中,列的行文本类似于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