我有两列:p.firstName 和 p.lastName。
现在我想显示两个名称组合的长度,问题是,在 p.lastName 的某些字段中存储了值“null”。
当我尝试这样做时:
LENGTH(p.firstName + p.lastName)
Run Code Online (Sandbox Code Playgroud)
我收到错误:
ORA-01722 invalid number
Run Code Online (Sandbox Code Playgroud)
然而,如果我把它分开
LENGTH(p.firstName) + LENGTH(p.lastName)
Run Code Online (Sandbox Code Playgroud)
它不会给我错误消息。但总和的长度为 NULL,即使 firstName 确实有几个字符。p.LastName 的 NULL 可以这么说打破它。
有人有主意吗?
我就是不明白为什么这不会编译。
我有三个文件:
主程序
#include "expression.h"
int main(int argc, char** argv)
{
return 0;
}
Run Code Online (Sandbox Code Playgroud)
表达式.h
#ifndef _EXPRESSION_H
#define _EXPRESSION_H
namespace OP
{
char getSymbol(const unsigned char& o)
{
return '-';
}
};
#endif /* _EXPRESSION_H */
Run Code Online (Sandbox Code Playgroud)
和表达式.cpp
#include "expression.h"
Run Code Online (Sandbox Code Playgroud)
(Ofc 里面还有更多内容,但即使我评论除了#include
out之外的所有内容,它也不起作用)
我编译它
g++ main.cpp expression.cpp -o main.exe
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误:
C:\Users\SCHIER~1\AppData\Local\Temp\ccNPDxb6.o:expression.cpp:(.text+0x0): multiple definition of `OP::getSymbol(unsigned char const&)'
C:\Users\SCHIER~1\AppData\Local\Temp\cc6W7Cpm.o:main.cpp:(.text+0x0): first defined here
collect2.exe: error: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)
问题是,它似乎解析expression.h
了两次。如果我只是使用main.cpp
OR编译它,expression.cpp
我就不会收到错误消息。编译器只是忽略我的 #ifndef 并继续......
有什么线索吗?