【问题标题】:Query to Skip the first Delimiter and select the second Delimiter In SQL在 SQL 中查询以跳过第一个分隔符并选择第二个分隔符
【发布时间】:2018-12-13 02:23:13
【问题描述】:

我正在尝试在哪里运行查询

,replace(b.[X.Logs],' ','.') as 'logs'
,CT2 as 
(
  Select *
    , CHARINDEX('Diagnostics',[logs]) as 'DiagBGN1'
    , CHARINDEX('.',[logs],CHARINDEX('Diagnostics',[logs])) as 'DiagEND1'
  From CT1
)
,CT3 as
(
  Select * 
    ,SUBSTRING([logs],[EPSABGN1]+1,[EPSAEND1]-[EPSABGN1]-1) as 'EPSA_CODE'
  From CT2
)

我希望代码跳过第一个 . 并选择前面的下一个 . 作为分隔符。

【问题讨论】:

  • 您能提供一些示例数据并期待结果吗?真的很有帮助
  • 解析所有字符,然后在反序列化后跳过它们
  • 日志建议一些类似的东西 1)Diagnostics.Passed.hardware 2.Diagnostics.failed.Hardware。我想忽略 .发布诊断关键字。
  • 你如何解析它们

标签: sql sql-server substring charindex


【解决方案1】:

你可以像下面这样使用它:

declare @S varchar(200) = 'Diagnostics.Passed.hardware';
select substring(@s, charindex('.', @S)+1, len(@s));

CharIndex 将提供第一个“.”的“索引”。然后使用它从字符串中获取子字符串。这将“忽略”“诊断”一词。来自字符串。

【讨论】:

  • 但这会变成静态的。我想保持这种动态。
  • 变量@s 就是一个例子。您可以将@s 替换为表中的实际列名。使用 substring(@s, charindex('.', @S)+1, len(@s)) 并将其替换为您选择的字段。
猜你喜欢
  • 1970-01-01
  • 2017-02-03
  • 1970-01-01
  • 1970-01-01
  • 2019-03-19
  • 2022-01-01
  • 1970-01-01
  • 2015-11-04
  • 1970-01-01
相关资源
最近更新 更多