Amazon Redshift:连接列内容略有不同的两列
Posted
技术标签:
【中文标题】Amazon Redshift:连接列内容略有不同的两列【英文标题】:Amazon Redshift: Joining two columns where column content is slightly different 【发布时间】:2018-08-21 05:42:41 【问题描述】:我尝试了我在这个论坛上可能找到的一切。这是我想要做的:
Exam Name
-----------
Data Analysis
Data Visualization
Data Warehousing
Big Data
Course Name
------------
Exam Readiness: Data Analysis
Exam Readiness: Data Visualization
Exam Readiness: Data Warehousing
Exam Readiness: Big Data
基本上,我试图找出谁在参加相应考试之前参加了考试准备课程。有什么办法可以在两列上使用 LIKE 子句吗?唯一不同的是,Course Name 前面有“Exam Readiness”。
我在下面尝试了这两个:
第一个查询:
select * from table
where course_name like '%'+ exam_name + '%'
第二次查询:
select * from table
WHERE COLUMNA LIKE '%'||COLUMNB||'%'
这是两个不同的查询,而不是一个查询。
【问题讨论】:
您的第二个查询应该已经开始工作了。当你实际运行它时会发生什么? 尝试使用查询 select * from table whereexam_name like '%' ||课程名称 || '%' 在SQL中,+
是加数字的运算符,所以第一个查询不能工作,但第二个使用正确的||
运算符应该可以工作
当我尝试“ select * from table whereexam_name like '%' || course_name || '%' ”它什么也没返回,我还尝试了“ select * from table where course_name like '%' | |exam_name || '%'" 返回 0 个结果。
这当然行得通:rextester.com/GLS89459 我猜有些事情你没有告诉我们。
【参考方案1】:
试试:
SELECT
foo
FROM exam
JOIN course ON (course.name = 'Exam Readiness: ' || exam.name)
【讨论】:
这比对 OP 提供的数据使用like
更好。
返回零结果.. :(
好吧,然后尝试调试它。一旦列名正确匹配,它将起作用。以上是关于Amazon Redshift:连接列内容略有不同的两列的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Amazon Redshift 中的临时表列更新现有表中的列?