php - % (joker) 在我的带有 IN 运算符的 sql 查询中不起作用
问题描述
我正在读出一个数据库表,并在列中排除一些具有给定值的行。
但我无法查询以获取适合我的号码。我怀疑它仍然计算 kampanje _xxxxx行。我%
用来排除。
$sql =
"SELECT *
FROM salg
WHERE
fnr='$fnr'
AND kategori NOT IN ('tilbehor', 'servicekontrakt', '%kampanje%')
AND dato BETWEEN '$fdato' AND '$tdato'"
;
$kjor = mysqli_query($connect, $sql);
$faste .= mysqli_num_rows($kjor). ", ";
解决方案
IN
比较运算符采用值列表,它不识别通配符,例如%
. 所以你假设它仍然计算 kampanje_xxxxx 行是正确的,因为 MySQL 实际上是在搜索一个字'%kampanje%'
面值。
您需要创建一个单独的LIKE
条件来检查包含通配符的值的列。我相信您的查询可以表达如下:
SELECT *
FROM salg
WHERE
fnr='$fnr'
AND kategori NOT IN ('tilbehor', 'servicekontrakt')
AND kategori NOT LIKE '%kampanje%'
AND dato BETWEEN '$fdato' AND '$tdato'
推荐阅读
- r - R中的小波谱
- javascript - 选择限制功能不适用于复选框表单reactjs
- sql - POSTGRES SQL Left Join 仅返回右表上最大的 UID?
- android - Android:如何以编程方式禁用屏幕截图并显示其小吃栏
- javascript - JavaScript 代理使用
- r - 按名称分组,如何将没有值的名称设置为 0?
- python - Pyplot Histogram - 从自动 bin 中获取准确的 x 值
- javascript - 为什么 x=0 等价于 x=''
- amazon-web-services - 无法让两个账户之间的 Amazon S3 跨区域复制工作
- apache-spark - 如果通过 :paste 粘贴代码,则 Spark 捕获的变量为 null