我想查询一个MySQL 5数据库。
假设数据库名称为db
,表名称为table
,列名称为column
该列为text
包含以下示例:
aksksksksjsjk&ct=100&rxp=0918&rpa=100
aksksksksjsjk&ct=100&rxp=1018&ls=1
所以我只想在rxp >
0918
所以我希望结果是:
aksksksksjsjk&ct=100&rxp=1018&ls=1
我尝试了SELECT column FROM db.table WHERE column LIKE '%rxp=1018%'
,它正在工作!但这意味着我将需要手动插入所有日期!
答案 0 :(得分:2)
假设rxp=
之后的值的长度始终为4,格式为MMYY
,那么以下内容将为您解决问题。请注意,由于您的日期是字符串格式,因此我们需要分别检查月份和年份。
SELECT *
FROM db.table
WHERE LEFT(SUBSTRING_INDEX(testColumn, 'rxp=', -1), 2) > '09'
AND MID(SUBSTRING_INDEX(testColumn, 'rxp=', -1), 3, 2) >= '18'
假设您在column
下具有以下值:
aksksksksjsjk&ct=100&rxp=0918&rpa=100
aksksksksjsjk&ct=100&rxp=1018&ls=1
aksksksksjsjk&ct=100&rxp=1116&ls=1
查询的输出应为
aksksksksjsjk&ct=100&rxp=1018&ls=1
但是,我强烈建议您规范化表并将每个值存储在单独的列中(ct
,rxp
,rpa
,ls
等)将大量信息合并为一个字符串的过程。
答案 1 :(得分:0)
create table #temp(
Integ Integer
)
insert into #temp values(CONVERT(INT, right(left('aksksksksjsjk&ct=100&rxp=0918&rpa=100', 29),4)) ) ,
(CONVERT(INT, right(left('aksksksksjsjk&ct=100&rxp=1018&ls=1', 29),4)) )
select * from #temp
where Integ >918
drop table #temp
希望对您有帮助