我正在尝试根据其他两个表中的数据将数值插入表中。这些数值与表中的字符串相关联SL_TERMS
。这些字符串在另一个表中使用UPLOAD_TEST
,其中包含我要填充的数据PC_TEST
。
例如,如果UPLOAD_TEST
有字符串“environment”并且它的 ID 是 1 SL_TERMS table
,我想将值 1 插入到PC_TEST
. 到目前为止,这里有两个代码示例:
INSERT INTO PC_TEST (TEST_ID, WHAT_ID, DATA_FORM)
SELECT PC_TEST_SEQ.NEXTVAL, t.TERM_ID, e.DATA_FORM FROM SL_TERMS t, UPLOAD_TEST e
WHERE t.TERM_ID IN
(SELECT WHAT FROM UPLOAD_TEST e WHERE e.WHAT = t.TERM_NAME AND t.TERM_NAME = t.TERM_ID);
--TERM_NAME is the field that has the string associated with the needed ID
和
INSERT INTO PC_TEST (TEST_ID, WHAT_ID, DATA_FORM)
SELECT PC_TEST_SEQ.NEXTVAL, t.TERM_ID, e.DATA_FORM FROM SL_TERMS t
INNER JOIN UPLOAD_TEST e
ON e.WHAT = t.TERM_NAME AND t.TERM_NAME = t.TERM_ID; --using join keyword
两者都给出ORA-01722: invalid number错误。和WHAT_ID
字段TERM_ID
都是数字。字符串是否可能没有正确匹配?TRIM
在这种情况下,我可能需要对LOWER
来自UPLOAD_TEST
. 任何帮助/建议表示赞赏。
e.WHAT
并且t.TERM_NAME
是具有一对多关系的相同字段。因此,在 中SL_TERMS
,该值TERM_NAME = 'environment'
存在一次,其关联的 也是如此TERM_ID = 1
。它可能存在于UPLOAD_TEST
.
因此,流程是e.WHAT
(字符串)--> t.TERM_NAME
(字符串)--> t.TERM_ID
(数字)。
我等同的原因t.TERM_NAME
是t.TERM_ID
因为我在调用e.WHAT
( t.TERM_NAME
) 时需要该关联的 ID。我不知道这是否是正确的方法(看起来不像),所以如果有办法TERM_ID
从字符串( )调用 ID( TERM_NAME
),那就是我需要的。