如何处理 JSL 脚本中的 NULL 值你好,
我对 JSL 很陌生,我的背景是 pl/sql。
我有一个 Oracle 表的 INSERT(见下文),该表在一些列中具有空值的某些行上失败。
在 Oracle 中,我只使用 NVL,例如 NVL(STD_ERROR,0)
我怎样才能在 JSL 中做到这一点? 在这种情况下,只是 column7 导致了问题,但我会将所有列包装在函数(?)中。
任何帮助是极大的赞赏。
for (i = 1, i <= nrows(dt), i++,
sql_statement =
"INSERT INTO TBL_COMBINED_STG " ||
"(Y_AXIS, PROD, LOT, TERM, BIAS, ESTIMATE, STD_ERROR, TRATIO, PROB_T) " ||
"VALUES(" ||ULL
"'" || char(column(1)) || "', " ||
"'" || char(column(2)) || "', " ||
"'" || char(column(3)) || "', " ||
"'" || char(column(4)) || "', 0," ||
//char(column(5)) || ", " ||
char(column(6)) || ", " ||
char(column(7)) || ", " ||
char(column(8)) || ", " ||
char(column(9)) || ") ";
// JMP will add a commit to the insert statement.
Execute SQL(dbc, sql_statement);
回复:如何处理 JSL 脚本中的 NULL 值这是另一种方法。创建一个与 Oracle 的 NVL 函数类似但略有不同的新函数 - 它返回一个字符串。请注意,我为您的字符变量返回空字符串“”,为数值返回“NULL”。
/*
nvl_char: convert number to a character. If missing return the second value
Arguments:
one_value Numeric value to convert to a character
value_if_null Character string to return if one_value is missing
*/
nvl_char = Function( {one_value, value_if_null},
{Default Local},
if (is missing(one_value),
// then
value_if_null,
// else
char(one_value);
);
);
// Test out the function
nvl_char(123, "NULL");
nvl_char(., "NULL");
nvl_char(., "");
for (i = 1, i <= nrows(dt), i++,
sql_statement =
"INSERT INTO TBL_COMBINED_STG " ||
"(Y_AXIS, PROD, LOT, TERM, BIAS, ESTIMATE, STD_ERROR, TRATIO, PROB_T) " ||
"VALUES(" ||
"'" || nvl_char(column(1)[i], "") || "', " ||
"'" || nvl_char(column(2)[i], "") || "', " ||
"'" || nvl_char(column(3)[i], "") || "', " ||
"'" || nvl_char(column(4)[i], "") || "', 0," ||
//char(column(5)) || ", " ||
nvl_char(column(6)[i], "NULL") || ", " ||
nvl_char(column(7)[i], "NULL") || ", " ||
nvl_char(column(8)[i], "NULL") || ", " ||
nvl_char(column(9)[i], "NULL") || ") ";
// JMP will add a commit to the insert statement.
Execute SQL(dbc, sql_statement);
);
回复:如何处理 JSL 脚本中的 NULL 值<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />非常感谢您的帮助
回复:如何处理 JSL 脚本中的 NULL 值杰拉德·麦克尔:
对于数值数据,JMP 中的测试是“Is Missing ()”。使用 Is Missing 函数构建 SQL 语句,当 Is Missing 为真时,则改用 NULL。
因此,这是一种针对小型数据集的方法:
您将从 SQL 语句的基本字符串开始,然后遍历所有值,测试每个值。
sql statement = beginning stuff || " VALUES("
For (I_Counter=1, I_Counter<=NCols(), I_Counter++,
If (IsMissing(thing I want to test),
sql statement = sql statement || "NULL, "
,
sql statement = sql statement || Char(Value) || ", "
)
);
sql statement = Left(SQL Statement, length(sql statement)-2) // removes the final comma
sql statement = sql statement + stuff to close it
或者,您可以采用数字列并将数据类型更改为字符。在这种情况下,缺失值将变为长度为 0 的字符串。但是,我相信 Oracle 不建议使用零长度字符串来表示 NULL。
迈克尔·哈斯拉姆