【问题标题】:Order By Alphabetically Not Working For Data Saved as Blob?按字母顺序排序不适用于保存为 Blob 的数据?
【发布时间】:2019-05-06 10:41:30
【问题描述】:

我正在查询我的DRIVERCAR 表,并尝试按name 的字母顺序(ASCa-z)对我的结果列表进行排序。但是,我的结果表没有反映我的 sql 语句,因为它根本没有按字母顺序排序:(Joe, Lucas, James, Ginny 应该显示为 Ginny, James, Joe, Lucas)。

我已经使用RSA Encryption 加密了这些name 值,然后将它们作为BLOB 数据类型存储在我的DRIVER 表中。这会影响为什么我的查询没有按照我想要的方式排序吗?

详情如下。

我的表格

DRIVER (driverID, username, name,....)

CAR (license, brand,....)

我的结果表格打印输出:

Driver ID | username | Name  | License Plate | Brand
----------------------------------------------------
004       | joe867   | Joe   | M8M UZX       | Toyota
001       | luke99   | Lucas | A99 PX3       | Hyundai
003       | james3   | James | YPL 393       | Ford
002       | ginny23  | Ginny | HP2 111       | Subaru

我的selectDriver() query 方法(为简单起见,省略了方法名称括号、try-catch 等内容)。

String sql = "SELECT driverID, username, name, license, brand
FROM driver, car
WHERE driver.driverID = car.driverID_FK
ORDER BY name ;"

PreparedStatement pst = connect.prepareStatement(sql);
rs = pst.executeQuery();

List<Driver> list = new ArrayList<Driver>();

while (rs.next()){

   Driver driver = new Driver(); //My Driver bean class
   driver.setDriverID(rs.getInt(1));
   driver.setUsername(rs.getString(2));
   ...
   driver.setBrand(rs.getString(5));
   list.add(driver);
}

rs.close();
connect.close();
return list;

我的 JSP 与 JSTL 结果表:

<table>
   <tr>
     <th>Driver ID</th>
     <th>Username</th>
     <th>Name</th>
     <th>License Plate</th>
     <th>Brand</th>
   </tr>

   <c:forEach var="driver" items="${driverArray}">
   <tr>
      <td><c:out value="${driver.driverID }"/></td>
      <td><c:out value="${driver.username }"/></td>
      <td><c:out value="${driver.name }"/></td>
      <td><c:out value="${driver.license }"/></td>
      <td><c:out value="${driver.brand }"/></td>
        </tr>
    </c:forEach>    
</table>

【问题讨论】:

  • 你的车表有名字栏吗?
  • 我的Driver 表有name
  • 是的,一组 RSA 加密字符串的排序方式与未加密的同一组字符串不同。您的代码虽然没有显示任何加密解密。另外,为什么要分别加密这些名称?
  • 我正在我的Driver 模型类中进行加密/解密。一旦我将我的name 解密为普通的String,我该如何解决这个问题?
  • 您可以在从数据库中获取驱动程序列表后尝试对其进行排序,我不知道您将如何从 sql 内部执行此操作。

标签: java mysql sql jsp sql-order-by


【解决方案1】:

只需要一点点改变。像

这样写你的查询
String sql = "SELECT driverID, username, name, license, brand
FROM driver, car
WHERE driver.driverID = car.driverID_FK
ORDER BY driver.name ;"

希望它会起作用!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多