我的代码:
myDIV
Oracle中的返回select COALESCE (null, '')
from dual
结果,但是
null
SQL Server中的
返回一个select COALESCE (null, '')
结果。
为什么这个结果不同?
它们是ANSI标准,不是吗?
答案 0 :(得分:7)
在有关NULL的Oracle文档中
Oracle数据库将长度为零的字符值视为空。
Oracle内部将空字符串更改为NULL
值。 Oracle根本不允许插入空字符串。
select null from dual
与
相同select '' from dual
他们全都返回NULL
。
因此,当您使用select COALESCE (null,'') from dual
时,它将在Oracle中转换为select COALESCE (null,null) from dual
。
此处是有关此内容的链接。
答案 1 :(得分:3)
在处理长度可变的字符类型(例如VARCHAR或VARCHAR2)时,将零长度的字符串分配给字段会导致NULL。但是,当将零长度的字符串分配给固定长度的字符类型(例如CHAR)时,结果是该字段被空白填充为CHAR数据类型所需的完整定义的长度。 See this AskTom question了解更多信息。
好运。
答案 2 :(得分:2)
您是否尝试过在oracle和sql server中使用以下代码
var form = document.getElementById("redirect");
form.onsubmit = function() {
var location = document.getElementById("location").value;
var goto = document.getElementById("goto").value;
if (location == "Bus") {
if (goto == "Home") {
window.location.href = "https://google.com";
}
else {
window.location.href = "https://facebook";
}
} else {
if (goto == "Home") {
window.location = "a url";
}
else {
window.location.href = "another url";
}
}
}
它返回不为null的结果oracle和sql server都
主要问题是oracle和SQL Server如何处理第二个表达式select COALESCE (null,' ') from dual
select COALESCE (null,' ')
。在Oracle中,将其视为NULL,但SQL Server将其视为空白空间。
答案 3 :(得分:2)
根据Oracle文档“ Oracle数据库将长度为零的字符值视为空值。”
参考:https://docs.oracle.com/database/121/SQLRF/sql_elements005.htm#SQLRF30037
不是ANSI标准。