sql - 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
推荐阅读
- python - 'b' 字符在被新行分割后的第一个位置
- ruby - 我可以使用不在我当前文件夹层次结构下的另一个文件夹中的 Stepdefinitions 吗?
- javascript - Firebase Cloud Functions 会立即删除节点,而不是在 2 小时后删除
- javascript - 递归查找children的children并移除
- c# - 会话参数为空 ASP.NET MVC
- sql-server - 在一天中的特定时间之后 - 哪种方法更好?
- c - 如何使用 i2c 程序和树莓派(C 语言)配置霍尔效应传感器(si7210)
- php - 为什么我自己跟踪代码时得到的输出是 20 而我得到的是 16?
- javascript - 在节点的顶层使用异步等待初始化多个数据库
- android - 预期 BEGIN_ARRAY 但在 gson、android、改造时出现 BEGIN_OBJECT 错误