SQL Server仅显示带有的文本-不起作用

时间:2018-07-25 02:59:01

标签: sql sql-server vb.net

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

对此有什么建议吗?

Select Section 
from Department  

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

1 个答案:

答案 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