PostgreSQL:重命名区分大小写的条目

鲁西恩·艾伦戴尔

我有一个 PostgreSQL 数据库,其条目如下所示:

twitter_name   unnest
apple          flower
apple          bug
banana         bug
BANana         flower
bAnana         leaf

这个想法是创建一个网络,其中所有条目都是节点,并且 column1-nodes 连接到 column2 节点。很明显,“香蕉”节点区分大小写,在创建网络时,我最终得到了三个不同的节点,而不仅仅是一个“香蕉”节点。
无论如何要改变这个?我想也许可以使用 RegEx 重命名和合并,但我不太确定。
我用来获取此表的查询如下:

with cte as (
    select u.twitter_name, REGEXP_MATCHES(t.txt, '@([A-Za-z0-9_]+)', 'g') as mentions
    from tweet as t, twitter_user as u
    where t.author_id = u.id
)
select twitter_name, unnest(mentions)
from cte;

将不胜感激任何提示!

柠檬

如果您想“重命名区分大小写的条目”,正如您的帖子标题所说,您可以通过对原始查询进行小的更改来完成,而不是使用正则表达式和合并。

您应该使用 PostgreSQL函数twitter_name将选择更改为 lowered 的选择,如下所示:twitter_nameLOWER

with cte as (
    select u.twitter_name, REGEXP_MATCHES(t.txt, '@([A-Za-z0-9_]+)', 'g') as mentions
    from tweet as t, twitter_user as u
    where t.author_id = u.id
)
select LOWER(twitter_name), unnest(mentions)
from cte;

鉴于原始查询适用于您的数据,此修复应该允许您获取固定表:

twitter_name
苹果
苹果 漏洞
香蕉 漏洞
香蕉
香蕉 叶子

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章