2016-09-24 62 views
0

识别空间无效的标识符我使用ORA-00904:““:在INSTR

substr(item_name, instr(item_name," ",1,1)-1)  

空间之前,获得一个项目的名称。

什么是正确的做法?

+0

除了明显的(在Oracle中,你应该使用字符串文字单引号),你写的公式,你不想要的东西做的。它应该是substr(item_name,1,instr(....)) - 第二个参数告诉你从哪里开始阅读(在这种情况下,从第一个字符开始),并且只有第三个参数 - instr()告诉你如何阅读。 – mathguy

回答

2

尝试使用单引号

substr(item_name, instr(item_name, ' ' ,1,1)-1)  
1

你的问题是与字符串的字符,这应该是一个单引号。

这通常使用regexp_substr()处理:

select regexp_substr(item_name, '^([^ ]*)[ ]', 1, 1) 
+0

除非代码变得太复杂,否则最好使用“standard”instr和substr。在这种情况下,该解决方案比正则表达式解决方案更容易阅读并且效率更高。 – mathguy

+1

@mathguy。 。 。这是查看它的一种方式。我用另一种方式来看待它。第二个词很有可能是下一个人想要的东西。 –