I have a database that contains two fields that collect multiple values. For instance, one is colors, where one row might be "red, blue, navyblue, lightblue, orange". The other field uses numbers, we’ll call it colorID, where one row might be "1, 10, 23, 110, 239."
Now, let’s say I want to SELECT * FROM my_table WHERE 'colors' LIKE %blue%; That query will give me all the rows with “blue,” but also rows with “navyblue” or “lightblue” that may or may not contain “blue.” Likewise, with colorID, a query for WHERE 'colorID' LIKE %1% will pull up a lot more rows than I want.
What’s the correct syntax to properly query the database and only return correct results? FWIW, the fields are both set as TEXT (due to the commas). Is there a better way to store the data that would make searching easier and more accurate?
you really should look at changing your db schema. One option would be to create a table that holds colours with an INT as the primary key. You could then create a pivot table to link my_table to colours
so your query could look like this – where ‘1’ is the value of blue (and more likely how you would be referencing it)