妙用mysql中的instr函数
2013年3月18日
没有评论
记录中有一个字段名是:cfield,内容如这样:2,4,7,17 现在要通过一次SQL查询取出所有该字段中包含7的记录。这时候使用mysql自带的instr函数将非常方便。测试代码如下:
1 2 3 4 5 6 | $aid=7; $sql="SELECT * FROM news WHERE instr(','+cfield+',',','+$aid+',')>0"; $result = mysql_query($sql) or die(mysql_error()); while($row = mysql_fetch_array($result)){ echo $row['title'].'<br>'; } |
需要注意的是:要在字段cfield和变量aid前后加逗号,这样可以解决7与17混淆的问题。
(2016-2-3)注:上述语句中+号的用法会使MYSQL尝试将两端字符进行相加运算,出现了异想不到的结果。比较稳妥的是用CONCAT函数相接:
1 | $sql="SELECT * FROM news WHERE instr(concat(',',cfield,','),',$aid,')>0"; |
或
1 | $sql="SELECT * FROM news WHERE concat(',',cfield,',') LIKE '%,$aid,%'"; |