【发布时间】:2015-08-15 13:07:12
【问题描述】:
我有以下查询
$area = "AREA V";
$sql = $pdo->prepare("SELECT areas FROM ranks WHERE areas LIKE :area");
$sql->bindValue(':area', '%' . $area . '%');
$sql->execute();
$num = $sql->rowCount();
列area 包含数据,例如'AREA I', 'AREA V', 'AREA VII'.
问题是,当我使用LIKE '%AREA V%' 执行查询时,会出现没有AREA V 但有AREA VI 和AREA VII 的结果。没错,应该如此,但我不希望这样。
我曾尝试在LIKE 子句中添加撇号,但无法正常工作。
我尝试过的事情:
// using apostrophes and PDO::PARAM_STR
$sql = $pdo->prepare("SELECT areas FROM ranks WHERE areas LIKE :area");
$sql->bindValue(':area', '%'' . $area . ''%', PDO::PARAM_STR);
// using IN
$sql = $pdo->prepare("SELECT areas FROM ranks WHERE :area IN (areas)");
$sql->bindValue(':area', $area);
最好的方法是什么?
【问题讨论】:
-
当您将搜索值更改为 %AREA%(可能是在将
WHERE调整为UPPER(areas) like :area之后)时,您是否得到了缺失值?您尝试SELECT DISTINCT areas FROM ranks ORDER BY areas成功了吗?
标签: mysql pdo sql-like in-operator