在 VoltDB 中,当我将空字符串作为参数传递时如何在列中存储 NULL?
In VoltDB, How to store NULL in column when i pass empty string as parameter?
目前,当我在 VoltDB 存储过程参数中传递一个空字符串时,它存储为一个空字符串。
当我将空字符串作为参数传递时,有什么方法可以存储 NULL(就像 Oracle 一样)?
在 VoltDB 中,空字符串与 NULL 不同。 Oracle 是我所知道的唯一将这些视为平等的数据库。如果您希望存储 NULL,只需将 NULL 传递到 VoltDB 存储过程即可。
如果您希望将空字符串存储为 NULL,我认为最好的方法是在某些 java 存储过程代码中使用条件语句。如果输入为“”,则存储空值。像这样:
public class Example extends VoltProcedure {
public final SQLStmt sql = new SQLStmt(
"INSERT INTO t (col1, col2) VALUES (?,?);");
public VoltTable[] run(long id, String val) throws VoltAbortException {
if (val.equals("")) {
val = null;
}
voltQueueSQL( sql, id, val );
return voltExecuteSQL();
}
}
目前,当我在 VoltDB 存储过程参数中传递一个空字符串时,它存储为一个空字符串。 当我将空字符串作为参数传递时,有什么方法可以存储 NULL(就像 Oracle 一样)?
在 VoltDB 中,空字符串与 NULL 不同。 Oracle 是我所知道的唯一将这些视为平等的数据库。如果您希望存储 NULL,只需将 NULL 传递到 VoltDB 存储过程即可。
如果您希望将空字符串存储为 NULL,我认为最好的方法是在某些 java 存储过程代码中使用条件语句。如果输入为“”,则存储空值。像这样:
public class Example extends VoltProcedure {
public final SQLStmt sql = new SQLStmt(
"INSERT INTO t (col1, col2) VALUES (?,?);");
public VoltTable[] run(long id, String val) throws VoltAbortException {
if (val.equals("")) {
val = null;
}
voltQueueSQL( sql, id, val );
return voltExecuteSQL();
}
}