在sql数据库中使用不按顺序的文本进行搜索

wqnecbli  于 2021-06-21  发布在  Mysql
关注(0)|答案(4)|浏览(311)

如果我有一个列存储一个字符串,它是不同日期的串联,比如说“星期一,星期三,星期六,星期天”,那么sql中是否有一个命令,只搜索“星期三,星期天”就返回该字符串?
按照下面的命令:

SELECT * FROM `information` WHERE Days = "Wednesday, Sunday"
mcdcgff0

mcdcgff01#

如果天数列表是字符串

SELECT * FROM `information` WHERE Days LIKE '%Wednesday%' AND Days LIKE '%Sunday%'

编辑已更改 ORAND 获取包含两个日期的行

vddsk6oq

vddsk6oq2#

假设搜索字符串的顺序正确,将源查询转换为like查询:

SELECT *
FROM information
WHERE Days LIKE CONCAT('%', REPLACE(REPLACE('Wednesday, Saturday', ', ', '%'), ',', '%')), '%')

表达式转换为

Wednesday, Saturday

%Wednesday%Saturday%
nxowjjhe

nxowjjhe3#

您可以使用正则表达式。所有常用的db引擎都支持它。
mysql中有 RLIKE 运算符,所以您的查询类似于:

SELECT * FROM `information` WHERE Days RLIKE '(Wednesday|Sunday)+.*(Wednesday|Sunday)+';
gwbalxhn

gwbalxhn4#

你可以用like命令

SELECT * FROM `information` WHERE Days LIKE "%Wednesday% AND Days LIKE '%Sunday%";

相关问题