我在各种格式的列中有很长的字符串列表。我想搜索该子字符串,然后在离开原始列时组织该列。
有一个表有8列,其中一列包含字符串。另一个表中还有一个单词列表。我想将列表中的单词与这些字符串作为附加列进行匹配。在“Tom”,“tom”,“tom az”,“Tom Hanks”这样的大表中会有这样的情况,所有这些都会有另一列只有“Tom”(列表中相应的匹配)。
我考虑过使用JOIN函数,但不确定如何使用子字符串。 excel逻辑将是“= IF((SEARCH(”Tom“,”asfj Tom dsf“)),” TOM”, “NULL”)。
如果找到多个匹配项,我想使用早期“ID”(1到11mil的整数列)。
答案 0 :(得分:0)
问题仍然有点含糊不清。您应该真正显示表结构,示例数据和预期结果。
假设您拥有这种最小的结构和数据:
CREATE TABLE People (
id INTEGER AUTO_INCREMENT PRIMARY KEY,
FullName TEXT
);
INSERT INTO People (FullName) VALUES ('Tom Hanks');
INSERT INTO People (FullName) VALUES ('Mary 467');
INSERT INTO People (FullName) VALUES ('ann margaret' );
INSERT INTO People (FullName) VALUES ('ziddy tom');
INSERT INTO People (FullName) VALUES ('bloody mary');
INSERT INTO People (FullName) VALUES ('mary ann');
CREATE TABLE Names (
id INTEGER AUTO_INCREMENT PRIMARY KEY,
Name TEXT
);
INSERT INTO Names (Name) VALUES ('Tom' );
INSERT INTO Names (Name) VALUES ('Mary');
INSERT INTO Names (Name) VALUES ('Ann' );
...然后你可以通过这样的查询获得第一个结果:
SELECT p.*, n.Name
FROM People p
JOIN Names n ON p.FullName LIKE CONCAT('%',LOWER(n.Name),'%');
(在SQLFiddle here上测试)
虽然存在一些问题。