假设我们的表格中包含名为number
(数据类型varchar
)的列,其中包含手机号码。电话号码是固定大小 - 10位数。我想要做的是,搜索确切位置的数字。像:
当我发送:xxx xxx xx xx时,它将返回所有编号
当我发送:223 2x5 xx xx时,它将返回仅匹配此模式的数字
如何在Yii框架中使用CDbcriteria
来实现这一目标?
答案 0 :(得分:0)
假设用户输入了数字,并且您拥有获得所有数字的$_POST["num"]
变量
$number = "";
for ($counter = 1; $counter <= 10; $counter++) {
if (is_numeric($_POST["num"][$counter]))
$number .= $_POST["num"][$counter];
else
$number .= "%";
}
$criteria = new CDbCriteria();
$criteria->condition = "number LIKE :number";
$criteria->params = array(':number' => $number);
....
这必须帮助你
答案 1 :(得分:0)
使用&#39;而不是&#39;而不是使用&#39; _&#39;并删除空格。然后按照建议执行LIKE
。
正在寻找223 2x5 xx xx
,请使用number LIKE "2232_5____"
。
如有必要,你可以
number LIKE REPLACE(REPLACE("223 2x5 xx xx", 'x', '_'), ' ', '')
这是一个测试:
mysql> select '2232958765' LIKE REPLACE(REPLACE("223 2x5 xx xx", 'x', '_'), ' ', '');
+------------------------------------------------------------------------+
| '2232958765' LIKE REPLACE(REPLACE("223 2x5 xx xx", 'x', '_'), ' ', '') |
+------------------------------------------------------------------------+
| 1 |
+------------------------------------------------------------------------+