处理我有表空间在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
处理我有表空间在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
使用TRIM
删除前导空格(和尾...):
SELECT SUBSTR(TRIM(Record_Value),1,2)
回答数2,编辑的问题,ANSI SQL兼容:
SELECT SUBSTRING(TRIM(SUBSTRING(Record_Value FROM 3)) FROM 1 FOR 2)
子串之前
一种不同的解决方案简单地移除所有位:
SUBSTRING(OTRANSLATE(Record_value,' ','') FROM 3 FOR 2)
谢谢dnoeth,我会用它来处理其他类似的查询。 – madsthiru
非常感谢你的回复。是的,但不幸的是,这不是正确的记录。我刚刚从队友那里询问,除了我提到的那个之外,这一排还有其他的价值。对不起。我编辑了我的问题。修剪命令现在不起作用:( – madsthiru
现在编辑,希望SUBSTRING,而不是SUBSTR的作品 – jarlh
辉煌!!非常感谢。它的作品像一个魅力 – madsthiru