之前的文章提到在SqlSugar的Where函数中使用!string.IsNullOrEmpty函数查询达梦数据库时,明明数据库中有数据但就是查不出来,但相同的代码在另一台电脑上就可以正常返回数据。
以下图中的两张表数据为例,执行下面的SQL语句无法查询到数据,但将OR B.ID ='‘去掉就可以查询到数据,或者将OR B.ID =’‘修改为OR B.ID =’ '也可以查到数据,感觉跟达梦处理空字符串的方式有关系。
SELECT A.NAME AS CLASSNAME ,B.NAME AS STUDENTNAME
FROM SCHOOL.CLASS A Left JOIN SCHOOL.STUDENT B ON ( A.ID = B.CLASSID )
WHERE (( A.CINDEX < 4 ) AND NOT( B.ID IS NULL OR B.ID =''))
百度“达梦 空字符串”,在参考文献3中提到达梦数据库中空字符串的处理跟COMPATIBLE_MODE参数有关(参数说明见参考文献1),默认值为0,但可以修改为0:none, 1:SQL92, 2:Oracle, 3:MS SQL Server, 4:MySQL, 5:DM6, 6:Teradata, 7:PG等值。当前电脑中达梦数据库的COMPATIBLE_MODE值为2。
将COMPATIBLE_MODE值修改为0,可以通过参考文献2中的方式修改参数值,也可以找到dm.ini文件直接修改其中的参数值,然后重启达梦服务(在达梦服务查看器中重启)。
再运行本文开头的SQL语句即能正常返回数据。
参考文献:
[1]https://blog.csdn.net/u011197085/article/details/139359872
[2]https://blog.csdn.net/weixin_42447367/article/details/107574073
[3]https://blog.csdn.net/aoxue469/article/details/133925527