首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选择选择

选择选择
EN

Stack Overflow用户
提问于 2014-11-14 14:40:09
回答 3查看 53关注 0票数 0

我想放弃第二个下划线之后的所有东西,例如,

R5504572C_TCHC001_171463_PDF

我想要

R5504572C_TCHC001

在sql服务器查询中。我试着得到了R5504572C,但我希望能得到R5504572C_TCHC001

代码语言:javascript
复制
select distinct left(JCFNDFUF2, charindex('_', JCFNDFUF2) - 1) AS LeftString

提前感谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-11-14 14:50:05

给你的是:

代码语言:javascript
复制
select distinct LEFT(JCFNDFUF2, CHARINDEX('_', JCFNDFUF2, CHARINDEX('_', JCFNDFUF2) + 1) - 1) AS LeftString

首先调用CHARINDEX来查找第一个'_‘,然后使用该索引+1作为下一个CHARINDEX调用的起始位置。如果你需要找到第五个“_”,事情就会变得很糟糕。:P

列名是"JCFNDFUF2",真的吗?:O

票数 0
EN

Stack Overflow用户

发布于 2014-11-14 14:50:16

只需使用起始位置

代码语言:javascript
复制
select distinct left(JCFNDFUF2, charindex('_', JCFNDFUF2, charindex('_', JCFNDFUF2))+1) - 1) AS LeftString

CHARINDEX (事务-SQL)

票数 0
EN

Stack Overflow用户

发布于 2014-11-14 14:54:57

我想指出的是,如果第二个'_'总是处于相同的位置,那么您可以简单地使用:

代码语言:javascript
复制
select distinct left(JCFNDFUF2, 17)

您只有一个例子,但它暗示了值的规范命名方案--这样的方案通常会有固定宽度的组件。

编辑:

如果组件中没有逗号,您也可以使用parsename()完成此操作:

代码语言:javascript
复制
select distinct parsename(replace(JCFNDFUF2), '_', 4) + parsename(replace(JCFNDFUF2), '_', 3)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26932444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档