【问题标题】:is there a way to use a mid-style function in sql like you can for excel?有没有办法在 sql 中使用 mid-style 函数,就像你可以在 excel 中一样?
【发布时间】:2022-01-11 16:17:52
【问题描述】:

我有以下字符串:

594074_Ally_Financial_TokioMarine_MD_SLDET_20210101_20211130_20211208

我试图在第一个 '_' 之后但在 '_TokioMarine' 之前提取所有内容,因此最终字符串将如下所示:

Ally_Financial

这可能与 SQL 有关吗?我尝试过,但它正在提取不正确的字符。我无法得到介于指定值之间的值。

SELECT
@CurPolicyHolder = Right( DFH.FileName, CHARINDEX('_', DFH.FileName) - 1)

【问题讨论】:

  • 您在寻找the SUBSTRING function吗?此外,您应该标记您的特定 DBMS,因为答案可能取决于它。
  • 子字符串可能是这种情况,我不确定如何应用它,但我使用的是 SQL Server
  • _TokioMarine 是固定值吗?还是您要查找第一个和第三个 _ 字符之间的所有内容?
  • 它是一个固定值
  • 这能回答你的问题吗? Extract data between characters SQL

标签: sql sql-server string substring


【解决方案1】:

要提取第一个 _ 字符和 _TokyoMarine 字符串之间的所有内容,您可以使用:

SELECT
    @CurPolicyHolder = SUBSTRING(DFH.FileName, CHARINDEX('_', DFH.FileName) + 1,
 CHARINDEX('_TokioMarine', DFH.FileName) - CHARINDEX('_', DFH.FileName) - 1)

SUBSTRING (Transact-SQL)
CHARINDEX (Transact-SQL)

【讨论】:

  • 嘿,所以" CHARINDEX('TokioMarine', DFH.FileName) - CHARINDEX('', DFH.FileName) - 1" 被认为是这个长度??
  • 是的,第三个参数是要返回的子串的长度。
猜你喜欢
  • 1970-01-01
  • 2010-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-03
  • 1970-01-01
  • 2014-03-13
  • 1970-01-01
相关资源
最近更新 更多