我在一个表中有两列,第1列包含 tom jerry
第二列有 tom x
. 我需要获取行,至少有一个字符串存在于另一列数据中
column1 column2
-----------------------------
tom jerry : tom xxx
tiger : tom yyy
tiger lion : lipard
lion tom : tiger lion
23 : 235 452
23 : 23
预期结果:
column1 column2
---------------------------
tom jerry : tom xxx
lion tom : tiger lion
23 : 23
4条答案
按热度按时间njthzxwz1#
我的方法是:
将这两列放入另一个具有identity column的表(以标识每一行)
编写一个函数,将文本按字符串拆分(在本例中传递一个空格),如果内置函数高于sql server 2016,则可以在此处使用该函数
将标识和拆分的数据分别获取到列1和列2的两个表中
在col split数据中连接两个表以进行匹配,并获取id
现在查询上面1中表中的数据
这里假设代码是针对sql server 2016的
tquggr8v2#
在mysql中,您可以对已呈现的数据使用正则表达式:
这可能有效,也可能无效。例如,这将匹配“lion”和“lions”--这符合我读到的描述。也就是说,如果你有稍微不同的想法,你可以修改模式来强制分词。
wbrvyc0a3#
您可以通过创建一个传递column1和column2值的函数来实现这一点。该函数将执行繁重的任务,检查column1值(由空格分隔的多个单词)是否在column2值中有任何匹配的单词。函数的伪代码应该是这样的-
第一步:根据空格拆分col1value得到一系列单词
第二步:根据空格拆分col2value得到一系列单词
步骤3:遍历col1的所有单词的外循环(从步骤1中提取)
第4步:遍历col2的所有单词的内部循环(从第2步提取)
第五步:检查col1和col2单词是否匹配。在任何时候,如果找到匹配项,则从函数返回true;否则就错了。
步骤6:根据这个函数返回的bool值,您将能够在调用逻辑中确定该记录是否满足您的条件。
mepcadol4#
您可以使用instring函数来实现这一点。函数取决于您使用的数据库。下面是问题,