JSL 스크립트에서 NULL 값을 처리하는 방법안녕,
저는 JSL을 처음 접했고 제 배경은 pl/sql입니다.
일부 열에 null 값이 있는 일부 행에서 실패하는 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);
Re: 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);
);
Re: JSL 스크립트에서 NULL 값을 처리하는 방법<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />당신의 도움을 주셔서 대단히 감사합니다
Re: JSL 스크립트에서 NULL 값을 처리하는 방법제라드McL:
숫자 데이터의 경우 JMP의 테스트는 "Is Missing ()"입니다.Is Missing 함수를 사용하여 SQL 문을 작성하십시오. Is Missing이 true이면 대신 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을 나타내기 위해 길이가 0인 문자열을 사용하지 말 것을 권장합니다.
마이클 하슬람