在搜索功能中仅从名称中获取主题标签的相关值
fetch only related values of hashtags from name in search functionality
我在 java 和 postgresql 工作。
我有一个 table 名称 'videos' 和名称 'video_name' 中的一个字段,因此视频名称可以包含 #tag 值,例如 ex。
- 我最喜欢的明星
#tom
- 周末愉快
#friends#party
马斯蒂
- 在
#seefood
和#friends
共进晚餐
- 和
#friendsEnjoy
一起散步
所以现在在这种情况下,我想在这个字段 'video_name' 上仅使用主题标签进行搜索。如果我搜索#friends,我会得到第 2,3 个视频。
我想知道在这种情况下应该查询什么
我试过使用查询
select * from videos where video_name ilike '%#Friends'
但它没有给我确切的结果。
我也试过使用这个查询
select * from videos where video_name ~* '#friends'
但是使用上面的查询我得到了 3 个结果 2、3、4。我只想要 2 和 3。
/**********************************回答************ ************************/
以上问题的答案如下。谢谢@Alex
视频包含在字符串前面带有 space 的主题标签,并且在该字符串前面再次包含新的#tag。
SELECT *
FROM videos
WHERE lower(video_name) SIMILAR TO '%#friends(\s%|\#%)?'
SELECT *
FROM videos
WHERE video_name REGEXP '#friends'
和here是postgresql版本如果你需要:
SELECT *
FROM videos
WHERE video_name SIMILAR TO '%#friends%'
和 here 是如何解决区分大小写的示例
SELECT *
FROM videos
WHERE lower(video_name) SIMILAR TO '%#friends%'
编辑 和 another variant 与 space 检查:
SELECT *
FROM videos
WHERE lower(video_name) SIMILAR TO '%friends(\s%|\#%)?'
我在 java 和 postgresql 工作。
我有一个 table 名称 'videos' 和名称 'video_name' 中的一个字段,因此视频名称可以包含 #tag 值,例如 ex。
- 我最喜欢的明星
#tom
- 周末愉快
#friends#party
马斯蒂 - 在
#seefood
和#friends
共进晚餐
- 和
#friendsEnjoy
一起散步
所以现在在这种情况下,我想在这个字段 'video_name' 上仅使用主题标签进行搜索。如果我搜索#friends,我会得到第 2,3 个视频。
我想知道在这种情况下应该查询什么
我试过使用查询
select * from videos where video_name ilike '%#Friends'
但它没有给我确切的结果。
我也试过使用这个查询
select * from videos where video_name ~* '#friends'
但是使用上面的查询我得到了 3 个结果 2、3、4。我只想要 2 和 3。
/**********************************回答************ ************************/
以上问题的答案如下。谢谢@Alex 视频包含在字符串前面带有 space 的主题标签,并且在该字符串前面再次包含新的#tag。
SELECT *
FROM videos
WHERE lower(video_name) SIMILAR TO '%#friends(\s%|\#%)?'
SELECT *
FROM videos
WHERE video_name REGEXP '#friends'
和here是postgresql版本如果你需要:
SELECT *
FROM videos
WHERE video_name SIMILAR TO '%#friends%'
和 here 是如何解决区分大小写的示例
SELECT *
FROM videos
WHERE lower(video_name) SIMILAR TO '%#friends%'
编辑 和 another variant 与 space 检查:
SELECT *
FROM videos
WHERE lower(video_name) SIMILAR TO '%friends(\s%|\#%)?'