SQL长度(空)

l. *_*arz 2 sql oracle null string-concatenation

我有两列: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 可以这么说打破它。

有人有主意吗?

Jay*_*pta 5

您可以使用 IFNULL()、ISNULL()、COALESCE() 和 NVL() 函数

SELECT LENGTH(COALESCE(p.firstName,'') + COALESCE(p.lastName,'')) AS Len FROM TableName
Run Code Online (Sandbox Code Playgroud)

或者

SELECT LENGTH(ISNULL(p.firstName,'') + ISNULL(p.lastName,'')) AS Len FROM TableName
Run Code Online (Sandbox Code Playgroud)

或者

SELECT LENGTH(IFNULL(p.firstName,'') + IFNULL(p.lastName,'')) AS Len FROM TableName
Run Code Online (Sandbox Code Playgroud)

或者

SELECT LENGTH(NVL(p.firstName,'') + NVL(p.lastName,'')) AS Len FROM TableName
Run Code Online (Sandbox Code Playgroud)

或者

SELECT LENGTH(p.firstName || p.lastName) AS Len FROM TableName
Run Code Online (Sandbox Code Playgroud)