varchar 变量的子字符串怎么可能为空?

jra*_*ara 5 sql sql-server oracle

作为一名 SQL Server 用户,我很惊讶在 Oracle 中这种语法是有效的:

select var
from table
where substr(var, 2, 1) is null
Run Code Online (Sandbox Code Playgroud)

varchar 字符串变量的子集是怎样的null?在 SQL Server 中,这永远不会是真的(?)。

select var
from table
where substring(var, 2, 1) is null
Run Code Online (Sandbox Code Playgroud)

Joa*_*son 4

在 Oracle 中的许多情况下,空字符串实际上是 NULL

如果您的 substr() 超出了 in-string 的范围,SQL Server 将返回空字符串,而 Oracle 将返回 NULL(相当于空字符串)。