我有一个包含不同ASIN的列。 该列是varchar(255)utf8_general_ci。 我想搜索一个值,例如:B074SJBC53
SELECT * FROM `products_stock` WHERE `asin` LIKE 'B074SJBC53'
和
SELECT * FROM `products_stock` WHERE `asin` = 'B074SJBC53'
不起作用!
SELECT * FROM `products_stock` WHERE `asin` LIKE '%B074SJBC53%'
有效,但我认为它不够安全。
如果我复制&将值粘贴到phpMyAdmin即使它在数据库中,我也没有结果? B074SJBC53是确切的值 - 在字符之前或之后没有空格或隐藏字符。
解决方案:我已使用
更新了整个专栏preg_replace('/[[:cntrl:]]/', '', $all['asin']);
似乎有隐藏的控制字符。它现在有效。
答案 0 :(得分:0)
你可以使用INSTR():
SELECT *
FROM `products_stock`
WHERE INSTR(`asin`, 'B074SJBC53') > 0