SQL查询:根据辅助表修改记录

时间:2013-01-07 10:30:43

标签: sql database postgresql alter

我在PostgreSQL数据库中有两个表。 第一个表包含一个ID和一个最多200个字符的文本字段,第二个表包含一个数据定义表,其中包含一个包含表情符号或首字母缩略词的列,第二个表包含将它们转换为简单易读的英语。

表1中的记录数约为1200,表2中的数字约为300。 我希望编写一个SQL语句,它将表1中第1列中的任何文本转换为基于表2中定义的常规可读语言。

因此,例如,如果表1中的值显示为: 最终完成:) 转换后的SQL类似于: 终于完成微笑或微笑 , 从第二个表中提取定义。

请注意,笑脸可以在第一列的文本中的任何位置,也可以是三百个字符中的一个。

有人知道这是否可行?

1 个答案:

答案 0 :(得分:0)

是。你想在SQL中完全做到这一点,还是在编写一些简短的代码来做到这一点?我不完全确定如何在SQL中完成所有操作,但我会考虑以下内容:

SELECT row.textToTranslate FROM Table_1
oldText = row.textToTranslate
Split row.textToTranslate by some delimeter
For each word in row.textToTranslate:
    queryResult = SELECT FROM Table_2 WHERE pretranslate=word
    if(queryResult!=Null)
        modifiedText = textToTranslate.replace(word, queryResult) 
UPDATE Table_1 SET translatedText=modifiedText WHERE textToTranslate=oldText