2016-09-16 22 views
0

处理我有表空间在Teradata的

Record_Value 
E1X4B1 20160822 
E1XBA1 20160822 
E1 X920160822 

以下行,我需要选择的值X4,XB和X9。我写了查询:

SELECT SUBSTR(Record_Value,3,2) 

它只选择X4和XB。要选择值X9(位于第7位),我想过使用coalesce函数,但它只处理NULL值而不处理BLANK值。你能指导我吗?预计产出将是

X4 
XB 
X9 

回答

0

使用TRIM删除前导空格(和尾...):

SELECT SUBSTR(TRIM(Record_Value),1,2) 

回答数2,编辑的问题,ANSI SQL兼容:

SELECT SUBSTRING(TRIM(SUBSTRING(Record_Value FROM 3)) FROM 1 FOR 2) 
子串之前
+0

非常感谢你的回复。是的,但不幸的是,这不是正确的记录。我刚刚从队友那里询问,除了我提到的那个之外,这一排还有其他的价值。对不起。我编辑了我的问题。修剪命令现在不起作用:( – madsthiru

+0

现在编辑,希望SUBSTRING,而不是SUBSTR的作品 – jarlh

+0

辉煌!!非常感谢。它的作品像一个魅力 – madsthiru

1

一种不同的解决方案简单地移除所有位:

SUBSTRING(OTRANSLATE(Record_value,' ','') FROM 3 FOR 2) 
+0

谢谢dnoeth,我会用它来处理其他类似的查询。 – madsthiru