1

I created a database for newsletter and i save campaigns. Also i add campaign code in customer table. for example i have a campagin with code "collagen" ana code "solgar-51%" and i save it in emailcampaign column "collagen, solgar-51%". Some customer have both of them. I want emailcampaign column like end of "solgar-51%".

This work

SELECT * 
FROM  `customer` 
WHERE  `emailcampaign` LIKE  '%solgar -51%%'

but this NOT

SELECT * 
FROM  `customer` 
WHERE  `emailcampaign` LIKE  'solgar -51%%'

neither this

SELECT * 
FROM  `customer` 
WHERE  `emailcampaign` LIKE  'solgar -51%%'
Cœur
  • 37,241
  • 25
  • 195
  • 267
Sak
  • 87
  • 2
  • 13

2 Answers2

1

Try \%:

SELECT * 
FROM  `customer` 
WHERE  `emailcampaign` LIKE  '%solgar -51\%'
Nick
  • 9,735
  • 7
  • 59
  • 89
  • but if '%solgar -51%' are twice in emailcampaign (2nd campaign with same name from user) this is not correct – Sak Nov 24 '15 at 19:45
  • Use something like this `str_replace('%', '\%', $user_value);` if you want to remove percents from string – Nick Nov 24 '15 at 19:48
  • But it is more better to use PDO and parameters – Nick Nov 24 '15 at 19:49
0

Escape '\'

SELECT * 
FROM  `customer` 
WHERE  `emailcampaign` LIKE  '%solgar -51\%' escape '\';

More detailed

Community
  • 1
  • 1
Ramin Darvishov
  • 1,043
  • 1
  • 15
  • 30