sql - SQL 字符串 - 删除两次出现之间的子字符串
问题描述
我有一些字符串,例如:
0@11001@2017@308
0@1@2018@327
0@200510@2020@3022
我需要删除年份值(在最后 2 个“@”之间)。所以结果应该是这样的:
0@11001@308
0@1@327
0@200510@3022
是否有一个简单的查询来做到这一点?
解决方案
UPDATE
yourTable
SET
col = STUFF(yourTable.col, AtSign2.pos, atSign3.pos - atSign2.pos, '')
FROM
yourTable
OUTER APPLY
(SELECT CHARINDEX('@', yourTable.col, 0)) AS atSign1(pos)
OUTER APPLY
(SELECT CHARINDEX('@', yourTable.col, atSign1.pos+1)) AS atSign2(pos)
OUTER APPLY
(SELECT CHARINDEX('@', yourTable.col, atSign2.pos+1)) AS atSign3(pos)
推荐阅读
- node.js - Dockerize angular/nodejs 应用程序
- typescript - 深度必填
带 Shift 不可分配 - postgresql - SQlite3 多对多表迁移到 Postgres 并锁定其列
- reactjs - 如何解决 redux 错误使用自定义中间件进行异步操作?
- python - queryset.values_list 是否再次调用 db?
- javascript - 有什么办法可以避免 localStorage.getItem() 的 key 的未定义值?
- python - 如何在 Django 模型中添加动态 Numpy 数组字段
- pine-script - 错误:“....应该在每次计算中调用以保持一致性。建议从这个范围中提取调用”
- django - 如何让 django 使用弹性 beanstalk 和 apache 在 https 上工作?
- azure-percept - 与 Azure Percept DK 访问点的连接经常断开