我在 Teradata SQL 表中,如下所示:
col1 | col2
----------------------------
Adam Nowak PHU | Nowak Adam
AAR Kowal Jan | Kowal Jan
Tomasz Gut | Juk Anna
我只想选择以下行:
- 在 col1 我有 col2 + something 的值(没关系在值之前或之后)
- 请注意,姓名和姓氏的顺序并不重要,因此 Jan Kowal 与 Kowal Jan 相同
因此,我需要像下面这样的东西,所以只有第一行和第二行,因为 col2 中有 col1 值 + 其他东西,名字和姓氏的顺序并不重要:
我使用了如下查询,但我的查询没有考虑到姓名顺序并不重要,并且对于我的代码 Jan Kowal 和 Kowal Jan 是不同的人。
where upper(col1) like '%' || upper(col2) || '%'
此外,我使用的代码非常适合我的情况并且可以正常工作,但仅在 MS SQL Server 上,在 Teradata SQL id 上不起作用:
WHERE
upper(col1) LIKE '%' + substring(upper(col2), 1, CHARINDEX(' ',col2)-1) + '%'
AND
upper(col1) LIKE '%' + substring(upper(col2), CHARINDEX(' ',col2)+1, LEN(col2)) + '%'
我怎样才能在 Teradata SQL 中做到这一点?您能否修改我在 MS SQL Server 上工作的代码或建议您自己在 Teradata SQL 上工作的解决方案?