包含具有字符串拆分功能的函数

Contains function with string splitting

提问人:Python_Hey 提问时间:2/15/2023 更新时间:2/15/2023 访问量:42

问:

我正在尝试使用 contains() 函数在连接表时对两列进行匹配。 我有两个问题

问题 1

数据如下所示:

col1: '[“红色”,“蓝色”,“绿色”,“是”,“紫色”,“汽车”,“黄色”]'

col2:“这不是黄色的”

SO 使用适用于某些示例,但是上面的那个无法正常工作,我需要拆分 col2 并在 col1 中单独查找每个值,但我无法做到这一点。contains(LOWER("col1"), LOWER("col2"))

问题 2我也有这样的案例:

col1: '[“房子”,“砖”,“紫色”,“蓝色”]'

col2:“非常大的房子”

因此,同样,上面的例子 col2 需要在 col1 中单独拆分和查找,但是房子需要从左边修剪 1 个字符(以制作房子),但其他一些例子可能需要删除 2 个字符。

为此,我倾向于整理一本字典来换取合适的名称,或者使用某种 NLP 词干分析器技术从单词中删除复数。

任何帮助都非常欢迎

谢谢!

sql 加入 nlp snowflake-cloud-data-platform 匹配

评论

0赞 nbk 2/15/2023
这解释了如何 stackoverflow.com/questions/69676196/ JSON ...

答:

0赞 Alex G 2/15/2023 #1

试试这个代码:

create table t1 (
    color varchar(32)
);
insert into t1 values ('Red');
insert into t1 values ('Green');
insert into t1 values ('yes');
insert into t1 values ('purple');
insert into t1 values ('car');
insert into t1 values ('yellow');
insert into t1 values ('House');
insert into t1 values ('brick');
insert into t1 values ('blue');
create table t2(
    words varchar(100)
);
insert into t2 values ('This Is Not Yellow');
insert into t2 values ('Very big houses');
select * from t1 join t2 on t2.words like concat('%',color, '%');

结果正是您想要的

颜色 的话
黄色 这不是黄色的
房子 非常大的房子

顺便说一句,我正在使用 Mysql,似乎 LIKE 忽略了案例。如果问题全部转移到同一个案例中。

select * from t1 join t2 on lower(t2.words) like 
concat('%',lower(color), '%');

评论

0赞 Python_Hey 2/15/2023
嘿,所以我所指的 Col1 是这样的字符串:'[“Red”,“Blue”,“Green”,“yes”,“purple”,“car”,“yellow”]',它都包含在一行中。如果它们都是分开的,则包含将执行相同的技巧。
0赞 Alex G 2/17/2023
尝试放置一些用于创建表的 SQL 脚本,并填充记录。将更容易理解需求