Mysql 如何在不使用大型结果集的情况下检查一个字符串是否是另一个字符串的子字符串?
我正试图用java编写一个webprice比较软件。我有一个数据库,其中已经有很多产品类型编号(如“ASD01”)。我还有另一个数据库,它有这样的产品类型编号:“somethingsd01something” 我想检查数据库2是否包含数据库1中的字符串。并删除其中不包含的行。我试图解决这个问题,在结果集中选择两个db,并在java代码中比较它们,但它们太大,占用了太多内存Mysql 如何在不使用大型结果集的情况下检查一个字符串是否是另一个字符串的子字符串?,mysql,jdbc,memory-leaks,resultset,Mysql,Jdbc,Memory Leaks,Resultset,我正试图用java编写一个webprice比较软件。我有一个数据库,其中已经有很多产品类型编号(如“ASD01”)。我还有另一个数据库,它有这样的产品类型编号:“somethingsd01something” 我想检查数据库2是否包含数据库1中的字符串。并删除其中不包含的行。我试图解决这个问题,在结果集中选择两个db,并在java代码中比较它们,但它们太大,占用了太多内存 我在mysql中找到了LOCATE()方法,它告诉我我想要什么,但我仍然必须使用数据库#1作为ReultSet,或者是否有其
我在mysql中找到了LOCATE()方法,它告诉我我想要什么,但我仍然必须使用数据库#1作为ReultSet,或者是否有其他方法来遍历行?如果我正确理解了这个问题,您应该能够用直接SQL删除您不想要的记录 如果您想从DB2中删除与DB1中的表不匹配的记录,那么左连接将是一种方法。。。DB2在字符串比较中左键连接DB1,然后删除任何不匹配DB1的DB2记录:
DELETE `DB2`.`TableTwo`.*
FROM `DB2`.`TableTwo` a
LEFT JOIN `DB1`.`TableOne` t
on a.FieldFromTableTwo LIKE CONCAT('%', t.FieldFromTableOne, '%')
WHERE t.FieldFromTableOne IS NULL
哦,对不起,看起来您不想删除匹配项,您想从DB2中删除与DB1中的内容不匹配的记录。。嗯,我会修改。
a.FieldName LIKE=“%ASD01%”
不会太快。它必须完全扫描a
表。如果您只想通过该操作一次(并删除一些行),那么我认为您不必担心。没错,它不会很快。但目前还不清楚他是需要一次运行还是按需运行。这是我能想到的最简单的答案,可能正是他需要的。是的,可能比LOCATE()
更快。