首页 > 解决方案 > SQL Server 仅显示来自文本的选定文本 - 不起作用

问题描述

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

对此有什么建议吗?

Select Section 
from Department  

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

标签: sqlsql-servervb.net

解决方案


您可以使用几种方法:

样本

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  

推荐阅读