【问题标题】:Using charindex, max, substring/right function at once一次使用 charindex、max、substring/right 函数
【发布时间】:2013-05-29 21:11:55
【问题描述】:

我正在使用的列中包含导入文件的目录路径。但是,我不想要整个目录路径。我只想要文件名。

我在做什么:

我正在尝试使用 Charindex 函数来定位以下内容:'\'。我还尝试结合 Max、substring、right、left 等函数来获得我想要的东西,但没有运气。

请有人指导我正确的道路吗?

 SELECT 
substring(batch_ID, max(charindex('\', batch_ID )), len(batch_ID) - max(charindex('\'))),

【问题讨论】:

  • 如果您显示一个示例字符串和您正在寻找的输出将会很有帮助。
  • 还有你使用的是哪个dbms,MS SQL,MySql等?
  • 这里是示例字符串:C:\Users\xyz122\Desktop\PF\import\12-13\COMRECOP.xml。我正在寻找的输出是文件名:示例:COMRECOP.xml
  • 我正在使用 sql server。
  • 酷,那么下面的答案就是你所追求的。

标签: sql substring max string-length


【解决方案1】:

如果您尝试从完整的文件路径中选择文件名,这适用于 MS SQL:

SELECT RIGHT(batch_ID ,CHARINDEX('\',REVERSE(batch_ID ))-1)

不能在您想要的上下文中使用像 MAX() 这样的聚合函数,因为它旨在从一系列行中返回一个值。

分解:

REVERSE('C:\Users\xyz122\Desktop\PF\import\12-13\COMRECOP.xml')

获取您:LMX.POCERMOC\31-21\tropmi\FP\potkseD\221zyx\sresU\:C

然后CHARINDEX在反转字符串的第13位找到\。

告诉你你想要字符串的最后 13 个字符,我们用 RIGHT() 得到,但其中包括 '\',所以我们从 13 中减去 1 得到文件名。

【讨论】:

  • 非常感谢!查询有效,我感觉我在错误的上下文中使用了 MAX() 函数,但不确定我还能做些什么来获得我想要的输出!你的回答让我大吃一惊!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-29
  • 2012-11-15
  • 2012-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
相关资源
最近更新 更多