如何在sql的不同表中将另一列替换为另一列?

时间:2018-12-24 13:41:57

标签: sql oracle replace

我有两个不同的表。其中一个具有文本数据,另一个具有单词及其词干。我想查看文本数据中的所有单词,并将它们与第二个单词和词干表进行比较。如果表TEXT_DATA和第二个表DICTIONARY之间存在连接,我想将其更改为词干版本。

我只是写了一个代码,但是没有用。

text data 
TEXT
I have chocolates

DICTIONARY
  WORD_FORM  STEM     
  chocalates chocolate

SELECT 
  REPLACE(TEXT,(SELECT WORD_FORM FROM DICTIONARY),(SELECT STEM FROM DICTIONARY)) 
FROM TEXT_DATA

我想看到我的新文字,例如:I have chocolate

预先感谢

1 个答案:

答案 0 :(得分:1)

考虑使用INSTR()连接表:

SELECT 
  REPLACE(t.TEXT, d.WORD_FORM, d.STEM) AS NEW_TEXT 
FROM TEXT_DATA t
INNER JOIN DICTIONARY d 
    ON INSTR(t.TEXT, d.WORD_FORM, 1, 1) > 0