我正在使用JTDS作为连接SQL服务器的驱动程序。
这是给我问题的查询:
SELECT EmpID,FirstName,LastName,CompanyName,DepartmentName,JobTitle,HireDate FROM Employees where UPPER(FirstName) LIKE 'KEVIN%'
它在SQL Server上返回2行。其中一个有'KEVIN'大写,另一个有'Kevin'就是这样。我使用通配符来确保我得到两个结果。在我的EmployeeDAO课程中,我使用以下内容:
ps = con.prepareStatement("SELECT EmpID,FirstName,LastName,CompanyName,"
+ "DepartmentName,JobTitle,HireDate FROM Employees WHERE UPPER(FirstName) LIKE ?");
ps.setString(1, FirstName + "%");
rs = ps.executeQuery();
然后我当然把KEVIN放在我的主力上。它只返回一行,即'Kevin'行。
如何解决此问题,以便返回所有行?
答案 0 :(得分:0)
SQL Server安装的默认排序规则为SQL_Latin1_General_CP1_CI_AS
,并且不区分大小写。
更改查询的排序规则:
SELECT Col1
FROM Table1
WHERE Col1 COLLATE Latin1_General_CS_AS LIKE 'KEVIN%'
答案 1 :(得分:0)
您的查询看起来很好(尽管我会在设置之前将参数值设置为大写,以使其更加健壮)。问题就在于你如何从ResultSet
收集行。可能你会明显地覆盖前一行和下一行,这样你的集合中最后只有一行(最后一行)。