在原始数据库中,该列的行文本类似于PA-PB-PC,并且我想在执行选择查询时仅选择PB。
对此有什么建议吗?
Select Section
from Department
预期的解决方案是在执行选择查询时仅显示中间文本“ PB”
答案 0 :(得分:0)
您可以使用以下几种方法:
示例
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