sql - 在 sql 列中搜索字符串并需要使用前缀拆分所需的字符串
问题描述
我有一个表,有两个列 account 和 rt_exclude。我只需要从 rt_exclude 列中选择带有前缀的单词“exclusion”。rt_exclude 列包含许多不同长度的行,所以我不想使用 case 语句。
123 , 278-C Share Exclusion; 3405-B Share Exclusion; 5784-Reit Exclusion
333 , 278-C Share Exclusion; 3405-B Share Exclusion; 5784-Reit Exclusion; 6532-Exclude GIREX 39822J102
444, 3274-TSSAX Exclusion; 3370-BFAFX Exclusion; 3405-B Share Exclusion; 5784-Reit Exclusion
要求的输出应该是这样与帐户列
123, Share Exclusion
123, Share Exclusion
123, Reit Exclusion
333, Share Exclusion
333, Share Exclusion
123, Reit Exclusion
444, TSSAX Exclusion
444, BFAFX Exclusion
444, Reit Exclusion
解决方案
这看起来像string_split()
:
select t.col1, s.value
from t cross apply
string_split(col2, '; ') s
where s.value like '%Exclusion';
请注意,不鼓励在单个列中存储多个值。您应该重新考虑数据模型。
推荐阅读
- reporting-services - Tablix 中的 SSRS 分组
- arrays - Array Select 中的 Ruby 变量正则表达式
- javascript - 在 JavaScript 中操作 DOM 时如何规避可变性?
- python - 让用户选择要附加到的列表
- c# - 平滑嘈杂的指南针 (Android)
- powershell - 如何通过 Powershell 脚本设置 IIS 10.0 管理服务 SSL 证书以允许 Web 部署?
- sql-server - 创建 Azure SQL 数据库时如何获取最新的 SQL Server 版本
- c++ - 带有 glm::frustum 闪烁的倾斜/离轴立体投影
- sql-server - SSIS:为什么序列容器需要 TransactionOption 才能报告任务失败?
- c# - 如何确保覆盖线程代码