i have stuck on problem column offer_description contains string amount(integer)....for example
buy above 200 buy above 900 buy above 300...
a user can query this...offer 200...then running query this....
select * offertable offer_description '%200%';
or
select offer_description offertable offer_description rlike '200';
it works fine if have rs.200 offer but...in other scenario...where there different set of offers like....
buy above 200 buy above 1200 //new 1 buy above 2000 //new 1 buy above 900 buy above 300...
so if execute above queries....it return 3 result...
buy above 200 buy above 1200 //new 1 buy above 2000 //new 1
where want offer exact amount 200...
buy above 200....how can achieve this...please help
if pattern same i.e. amount @ end , separated space can use substring_index
function
mysql> select substring_index('buy above 200',' ',-1) amount; +--------+ | amount | +--------+ | 200 | +--------+ 1 row in set (0.00 sec)
so may query as
select * table substring_index(col_name,' ',-1) = '200'
also can use rlike matching
mysql> select 'buy above 200' rlike '[[:<:]]200[[:>:]]'; +-------------------------------------------+ | 'buy above 200' rlike '[[:<:]]200[[:>:]]' | +-------------------------------------------+ | 1 | +-------------------------------------------+ 1 row in set (0.00 sec) mysql> select 'buy above 2000' rlike '[[:<:]]200[[:>:]]'; +--------------------------------------------+ | 'buy above 2000' rlike '[[:<:]]200[[:>:]]' | +--------------------------------------------+ | 0 | +--------------------------------------------+ 1 row in set (0.00 sec) mysql> select 'buy 300 above' rlike '[[:<:]]200[[:>:]]'; +-------------------------------------------+ | 'buy 300 above' rlike '[[:<:]]200[[:>:]]' | +-------------------------------------------+ | 0 | +-------------------------------------------+ 1 row in set (0.00 sec) mysql> select 'buy 200 above' rlike '[[:<:]]200[[:>:]]'; +-------------------------------------------+ | 'buy 200 above' rlike '[[:<:]]200[[:>:]]' | +-------------------------------------------+ | 1 | +-------------------------------------------+
so have data as
- buy above 200
- buy above 200 , more
- 200 , more buy
- buy above 2000
- buy above 300
and select matching 200 , query be
select * table colname rlike '[[:<:]]200[[:>:]]'
Comments
Post a Comment