sql-server - 在sql数据库中最后一次出现“_”后获取子字符串值
问题描述
我想在最后一次出现“_”后获得价值,所以我使用下面的方法,它给了我“BSARST.G041720151200”,这是正确的。
他们是否有更好的方法或以下方法足够体面?
declare @var varchar(max)='\\IPC-NAS03.ads.aexp.com\US022868_E3\BatchFilings\BatchArchive\FIU2FINCEN_BSARST.G041720151200'
select right(@var,charindex('_',reverse(@var))-1)
解决方案
正如我在评论中提到的那样:“我能想到的唯一替代方法是使用一个字符串分割器,它对部分进行编号(例如DelimitedSplit8K_LEAD
),然后根据项目编号降序选择第一行。这可能会更快。 " :
WITH RNs AS(
SELECT DS.Item,
ROW_NUMBER() OVER (ORDER BY DS.ItemNumber DESC) AS RN --PARTITION BY V.YourString?
FROM (VALUES('\\IPC-NAS03.ads.aexp.com\US022868_E3\BatchFilings\BatchArchive\FIU2FINCEN_BSARST.G041720151200'))V(YourString)
CROSS APPLY dbo.DelimitedSplit8K_LEAD(V.YourString,'_') DS)
SELECT R.Item
FROM RNs R
WHERE R.RN = 1;
推荐阅读
- javascript - 如何将返回值保存到变量中
- node.js - 发布生产失败:等待条件超时(无文件上传)
- java - 我们可以在Android中加载相对于其链接的任何网页吗
- php - 无法简单登录 PHP Form Centos 8 Nginx 1.41
- python - ValueError:检查目标时出错:预期dense_33的形状为(60、60、5)但得到的数组形状为(240、240、5)
- spring - 如何在 Spring RestController 方法中从请求中提取查询参数?
- vhdl - Vhdl:不受约束的数组和大小实例化
- javascript - 如果许多功能依赖于响应,那么等待 jquery ajax getJSON 完成的最佳方法是什么?
- playframework - 在 Play2 中配置 akka-http 请求超时
- c++ - 如何使用 resetiosflags 重置 ostream 标志?