sql - 帮助尝试使用 PATINDEX 或 CHARINDEX 找出 SQL 连接

标签 sql

致力于将两个旧数据库系统连接到新数据库中,在那里我可以避免像下面看到的那样愚蠢的问题。我正在尝试对两个文本数据不同的表进行连接,并且它通常可以工作,除非在另一个表中没有使用实际的完整姓氏。还有其他列是连接的一部分,但我仍然需要对这两列执行连接以获得正确的结果。

Table1.Column Table2.Column
米勒 01 米勒
授予 1-3 授予
大米/类尼特 2A 大米

因此 (CHARINDEX(table1.column, Table2.Column) > 0) 仅适用于姓氏略有不同的情况,例如 Rice/Bennet <> 02 Rice。处理这个问题的最佳方法是什么?一般来说,这种类型的senario是唯一的支持。

更新:我在想,也许更简单的方法是替换 table2.column 中第一个空格之前的任何数字和字符,并将其用于 table1.column ??我在前几年发现前几个字符可以是数字或字母,但在姓氏开头之前有一个空格

最佳答案

根据对您的问题的更新,如果您想删除包括第 2 列中的空格在内的前几个字符并将其与您描述的第 1 列进行比较,那么这就是您可以在 WHERE 子句中保留的内容。

(CHARINDEX(RIGHT(table2.column, len(table2.column)-CHARINDEX(' ', table2.column)), table1.column) > 0)

关于sql - 帮助尝试使用 PATINDEX 或 CHARINDEX 找出 SQL 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1331755/

相关文章:

java - select 语句中出现意外标记

mysql - 查询数据触发

mysql - IF 存在则在 mysql 中更新

mysql - 将 %keyword% 转换为匹配(反对)

如果 URL 中没有 HTTP,则 SQL 相关错误

sql - 错误:“ON a.guest_id”中出现意外符号

php - Gobbly php 到可用的 SQL?

sql - 如何引用另一个表中的多行?

MySQL 查询 2 条记录在顶部,然后是其余记录

mysql - 我如何使用 Percona 的 `CREATE INDEX` 工具执行 `pt-online-schema-change`?