【问题标题】:How to get substring from invariant string如何从不变字符串中获取子字符串
【发布时间】:2023-03-25 18:08:01
【问题描述】:

我有一列保存了贷款编号,但该列中的数据是变化的,我必须从这样的字符串中获取子字符串。例子是

RF01234-001-9   
CFF 01234-012-5
DSL---01234-188-5

在上述所有情况下,子字符串应返回“01234”,另一个子字符串应返回“001”、“012”、“188”。

【问题讨论】:

  • 您为什么使用不受支持的 SQL Server 版本?
  • 什么表示你是'01234'?识别贷款号的逻辑是什么?似乎您也应该修复数据以遵循标准化格式。也许您应该考虑这样做并实施CONSTRAINT 以确保将来遵守格式。
  • 另外,在您开始收到答案后,请避免“移动球门柱”。它通常会在您的问题中吸引反对票(特别是如果它使现有答案无效),并且不幸的是只会浪费那些已经努力回答您的问题的人的时间。例如,您添加的最后一句话现在使 Gordon 的答案不完整,即使它(可能)在回答时是正确的。
  • 贷款号总是00000-000-0的格式吗?它可以有任何其他格式吗?一个字符串中可以有多个吗?如果是这样,你会追求什么价值?
  • 这些是保存它的唯一格式。

标签: sql sql-server sql-server-2008


【解决方案1】:

这回答了问题的原始版本。

您似乎想要字符串中的前 5 位数字。如果是这样:

select substring(str, patindex('%[0-9][0-9][0-9][0-9][0-9]%', str), 5)

Here 是一个 dbfiddle。

【讨论】:

  • 戈登林诺夫谢谢。您的解决方案有效。我已经更新了我的问题。我也需要中间子串。
  • @SyedImranShah 这应该是您原始问题的一部分。不要更新问题和无效的现有答案。从一开始就花时间全面解释问题。
  • Larnu 未来一切顺利。
  • @SyedImranShah。 . .正确的做法是接受此问题的答案并提出 问题。我不玩“猜问题”的游戏。
猜你喜欢
  • 1970-01-01
  • 2011-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-04
  • 2015-08-21
  • 1970-01-01
相关资源
最近更新 更多