想象一下,我想在我的数据库中搜索一个电话号码,但它们会以不同的格式保存
例如: 12345678 13.36.15.36 13.654.365
找到给定手机的理论的最佳方式是什么。
我希望我可以做这样的事情
Doctrine_Core::getTable('user')->create('u')->where(str_replace('.', '', u.phone) = ?, $phone)
有没有办法实现这个目标?
答案 0 :(得分:1)
我尝试在select方法中使用sql函数,如concat和date_format。我不明白为什么替换不起作用。
试试这个:
$q = Doctrine_Query::create()
->select("REPLACE(telnumber,'.','') as tel")
->from("user")
->where('tel = ?',123456);
以数组格式获得结果:
$q->execute(array(),Doctrine_Core::HYDRATE_ARRAY);
答案 1 :(得分:0)
您可以使用mySQL Replace:
SELECT replace(`telnumber`, '.', '') as 'telnumbers' FROM `yourtable` where `telnumbers`=123456
如果telnumber
是包含电话号码的字段,yourtable
是您的表格的名称,123456
是您要查找的号码。
如果您希望在搜索前删除电话号码字段中的其他字符,并且/或使用telnumbers LIKE "%123456%"
或类似字符,则可以嵌套REPLACE语句...