我想放弃第二个下划线之后的所有东西,例如,
R5504572C_TCHC001_171463_PDF
我想要
R5504572C_TCHC001
在sql服务器查询中。我试着得到了R5504572C,但我希望能得到R5504572C_TCHC001
select distinct left(JCFNDFUF2, charindex('_', JCFNDFUF2) - 1) AS LeftString提前感谢
发布于 2014-11-14 14:50:05
给你的是:
select distinct LEFT(JCFNDFUF2, CHARINDEX('_', JCFNDFUF2, CHARINDEX('_', JCFNDFUF2) + 1) - 1) AS LeftString首先调用CHARINDEX来查找第一个'_‘,然后使用该索引+1作为下一个CHARINDEX调用的起始位置。如果你需要找到第五个“_”,事情就会变得很糟糕。:P
列名是"JCFNDFUF2",真的吗?:O
发布于 2014-11-14 14:50:16
只需使用起始位置
select distinct left(JCFNDFUF2, charindex('_', JCFNDFUF2, charindex('_', JCFNDFUF2))+1) - 1) AS LeftStringCHARINDEX (事务-SQL)
发布于 2014-11-14 14:54:57
我想指出的是,如果第二个'_'总是处于相同的位置,那么您可以简单地使用:
select distinct left(JCFNDFUF2, 17)您只有一个例子,但它暗示了值的规范命名方案--这样的方案通常会有固定宽度的组件。
编辑:
如果组件中没有逗号,您也可以使用parsename()完成此操作:
select distinct parsename(replace(JCFNDFUF2), '_', 4) + parsename(replace(JCFNDFUF2), '_', 3)https://stackoverflow.com/questions/26932444
复制相似问题