继续高分

WBOY
WBOYOriginal
2016-06-13 10:25:07945browse

继续高分求助。
需求如下:
表中现有来电字段caller
另有状态字段status

前台显示时,如果status = 付费查看
则caller的电话号码显示为1331234****(后4位隐藏)

通话记录有个搜索功能
其中caller支持模糊搜索

现在假如有两个号码
13356781234和1331234****(****为5678,只是模板显示为****,数据库为13312345678)
问我在模糊搜索5678时,如何根据status = 付费查看来判断
只搜出来第一个,而不搜出来第二个

------解决方案--------------------

SQL code
select * from table where table.column like '%5678%' and status ='付费查看'<br><font color="#e78608">------解决方案--------------------</font><br>仅搜前7位呗,WHERE LEFT(caller,7) like '%…%'<br><font color="#e78608">------解决方案--------------------</font><br>WHERE (status ='付费查看' && LEFT(caller,7) like '%…%') OR (status !='付费查看' caller like '%…%')<br><br>这个意思?<br><font color="#e78608">------解决方案--------------------</font><br>只出现在结尾的 like '%5678'<br>只出现在开头的 like '133%'<br><br>mysql 有正则表达式,你可以使用<br><br>你的需求描述的不大清楚<br><font color="#e78608">------解决方案--------------------</font><br> 上面()里都用 AND 才对<br><font color="#e78608">------解决方案--------------------</font><br>就不能变通一下哦<br><br>SUBSTR(field, 1, LENGTH(field)-4) like '%……%'<br><br>至于是否付费,那是你在php代码中控制SQL语句<br><font color="#e78608">------解决方案--------------------</font><br>LEFT函数一样的哦,获取字段长度,去掉后面4位<br><br>你这里全是数字,length就可以啦<br><font color="#e78608">------解决方案--------------------</font><br>amani11 那样可以啊<br>这样不行吗?<br><br><br><br>WHERE (status = '付费查看' AND SUBSTR(field, 1, LENGTH(field)-4) like '%……%') OR (status != '付费查看' AND caller like '%…%')<br><br><div class="clear">
                 
              
              
        
            </div>
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn