〇、前情提要

写了条语句结果遇到了Unknown column ’ ’ in 'where clause’报错。
参考:

  1. 数据库 —— 查询避免 Unknown column ‘xxx’ in ‘where clause’ 错误
    https://blog.csdn.net/qq_19865749/article/details/76883891

一、问题分析

原sql语句
public List<media> findAllMedia(User user) {
		int sysType = user.getSysType();
		String ucomp = user.getSysComp();
		
		//1.获取连接
        String sql = null;
        if( sysType == 11 ){
            sql = "select * from media";
        }
        else {
            sql = "select * from media where ava = 1 AND comp = "+ ucomp;
        }
console报错

在这里插入图片描述
翻译:列名不存在的结论


二、解决

参考

参考:
数据库 —— 查询避免 Unknown column ‘xxx’ in ‘where clause’ 错误
https://blog.csdn.net/qq_19865749/article/details/76883891

单从字面理解,我们很容易得出列名不存在的结论,但是,很多时候起始并不是由于列名出错造成的。而是由于拼凑sql语句时对字符类型数据没有用引号引起来造成的。

例如:一个hql语句:final String hql = "from ActiveCert ac where ac.issuerName="+issueName";
设置issueName值为ysy,则错误如下:
Unknown column ‘ysy′ in ‘where clause’
sql中如果issueName是整型的倒不会出现什么错误,而如果sql中字符串类型必须要包含在引号内。
所以修改hql为:final String hql = "from ActiveCert ac where ac.issuerName='"+issueName+"'";
则错误消失。

分析

我想写的是comp该列要与ucomp相符,但在拼凑sql语句时,对字符类型数据要用引号引起来。

纠正
sql = "select * from media where ava = 1 AND comp = '"+ ucomp +"'";

三、测试

成功查询到符合条件的记录。


Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐