[英]MySQL select from text column with filtering
我想查詢一個 MySQL 5 的數據庫。
假設數據庫名稱為db
,表名稱為table
,列名稱為column
該列是一個text
包含以下內容,例如:
aksksksksjsjk&ct=100&rxp=0918&rpa=100
aksksksksjsjk&ct=100&rxp=1018&ls=1
所以我想只在 rxp >
0918
地方查詢那個表和 grep
所以我期待結果是:
aksksksksjsjk&ct=100&rxp=1018&ls=1
我嘗試使用SELECT column FROM db.table WHERE column LIKE '%rxp=1018%'
並且它正在工作! 但這意味着我需要手動插入所有日期!
假設rxp=
之后的值始終為MMYY
格式的長度 4,那么以下內容應該可以為您解決問題。 請注意,由於您的日期是字符串格式,因此我們需要分別對月份和年份進行檢查。
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
等)中,而不是將大量信息組合到一個字符串中。
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
希望對你有幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.