【发布时间】:2011-05-10 16:50:45
【问题描述】:
我的问题是关于一个名为 contract_nm varchar2(14) 的字段。我需要从中获取 3 个不同的值,使用该字段来获取 where 子句的过滤器。
这里是示例数据以及数据可能有多长,9 或 10 或 11,现在不能再多了。
CONTRACT_NM LENGTH(CONTRACT_NM)
F.US.WZ10 9
F.US.WZ11 9
F.US.WZ12 9
F.US.RBZ10 10
F.US.RBZ11 10
F.US.RBZ12 10
F.US.ZWAZ10 11
F.US.ZWAZ11 11
F.US.ZWAZ12 11
etc
1) 我需要显示contract_nm的最后3个字符。
2) 检查contract_nm的最后3个字符,看第一个字母是否是下面的一个,那么接下来的2个字母是MONTH和YEAR,DAY默认为第一天这个月。我需要像日期一样显示,因为它会进入日期字段。
Trade Months (Terms):
F January
G February
H March
J April
K May
M June
N July
Q August
U September
V October
X November
Z December
3)这在书面上有点难以解释,我会尽力希望你能理解我!读取 contract_nm 数据,忽略前五个字符(F.US.),然后忽略最后三个字符,即 Z11。现在,我们正在使用的是中间的 1 个字符(9 长度)或 2 个字符(10 长度)或 3 个字符(11 长度)的数据,请参阅下面的数据。如果 1 个字符,则显示该字母,否则,如果 2 个字符,则检查第 2 个字母,如果不是“E”或“A”或“T”,则显示两个字母,否则仅显示第一个字母。如果是 3 个字符,则显示前 2 个字符。
4) 我的 where 子句需要一个过滤器来读取 contract_nm 数据,忽略前五个字符 (F.US.),然后忽略最后三个字符,即 Z11。现在,我们正在使用的是中间的 1 个字符(9 长度)或 2 个字符(10 长度)或 3 个字符(11 长度)的数据,请参阅下面的数据。如果是 2 个字符,则检查第 2 个字母,如果不是“E”或“T”则不提取数据,否则执行。 else if 3个字符,然后检查第3个字母如果不是'E'或'T'那么不要拉数据,否则就做。
【问题讨论】: