【问题标题】:How do you do multiple substrings for a field in Teradata?您如何为 Teradata 中的一个字段处理多个子字符串?
【发布时间】:2021-05-01 12:22:39
【问题描述】:

我有一个字段来提取具有不同长度的帐号,我想传递帐号的最后四位数字。我遇到的困境是,由于它们的长度不同,我在对字段进行子串处理时遇到了麻烦。标准长度为 11 位,但也有 9 位和 7 位的帐户。

如何在多个子字符串中对这些值进行子字符串化,以在一次查询中捕获所有帐户的最后 4 位数字?

这是我目前拥有的:

SELECT  SUBSTRING(ACCT_NBR,7,4) AS BNK_ACCT_NBR
FROM NAMEOFTABLE;

我希望有额外的子字符串来捕获没有 11 位数字的帐号类似于

SUBSTRING(ACCT_NBR,5,4)
SUBSTRING(ACCT_NBR,4,4) 

结果应如下所示:

76587990891 - 0891 654378908 - 8908 45643456 - 3456

你能帮我弄清楚我该怎么做吗?

谢谢。

【问题讨论】:

  • 样本数据和期望的结果真的很有帮助。
  • 这是我正在寻找的样本:Acct Number Desired Results 6117969637 9637 5221672389 2389 61004323 4323 7018417 8417 701841 1841

标签: sql substring teradata


【解决方案1】:

ACCT_NBR 是 VarChar 还是 INT?

VarChar:
Right (ACCT_NBR,4)
Substr(ACCT_NBR,Char_Length(x)-3)

INT:
ACCT_NBR MOD 10000

【讨论】:

  • ACCT_NBR 是一个 VARCHAR 字段,总长度为 19 个字符。我正在尝试捕获该字段中的最后四位数字。帐号长度为11个字符、9个字符和7个字符的多个条目。我想得到所有那些没有被我目前拥有的东西:SUBSTRING(ACCT_NBR,7,4) AS BNK_LST_4_NBR
  • RIGHT(ACCT_NBT,4) 命令对我有用。谢谢你的帮助:)。
猜你喜欢
  • 1970-01-01
  • 2020-06-25
  • 2021-01-09
  • 1970-01-01
  • 2021-11-06
  • 1970-01-01
  • 2010-12-22
  • 2016-12-03
相关资源
最近更新 更多