Mysql ORDER BY length(col), col 不工作
Posted
技术标签:
【中文标题】Mysql ORDER BY length(col), col 不工作【英文标题】:Mysql ORDER BY length(col), col is not working 【发布时间】:2014-07-21 00:25:50 【问题描述】: mysql employee table
注意:这里 emp_id 是 varchar
String query="select * from employee ORDER BY length(emp_id),emp_id";
if i run only the above query it works fine......
Query ouput :
当我运行下面的 jsp 代码时,这个查询不起作用
<html><head>
<script type="text/javascript" src="jquery-1.7.2.min.js"></script>
<link href="jquery.dataTables.css" rel="stylesheet" type="text/css"/>
<script src="jquery.dataTables.js"></script>
</head>
<body>
<div class="container">
<table id="example" class="display" border="1">
<thead><tr>
<th>EMPLOYEE_ ID</th>
<th>NAME</th>
<th>DEPARTMENT</th>
<th>DESIGNATION</th>
</tr></thead>
<tbody>
<%
try
String query="select * from employee ORDER BY length(emp_id),emp_id";
Class.forName("com.mysql.jdbc.Driver");
Connection con = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","");
Statement stmt=con.createStatement();
ResultSet rs=stmt.executeQuery(query);
while(rs.next())
%>
<tr>
<td><%=rs.getString(1)%></td>
<td><%=rs.getString(2)%></td>
<td><%=rs.getString(3)%></td>
<td><%=rs.getString(4)%></td>
</tr>
<% %>
</tbody></table>
<%
rs.close(); stmt.close();con.close();
catch(Exception e)
e.printStackTrace();
%>
</div>
<script>
$(document).ready( function ()
var table = $('#example').DataTable();
);
</script></body></html>
jsp 的输出:
注意:在我的表中 emp_id 是 varchar................................................. ..................................................... …………………………………………………………………………………………………………………………………… 请帮帮我....
【问题讨论】:
您认为您在 JSP 代码或 SQL 查询中有错误吗? mysql查询或我的jsp页面没有错误...... emp_id 为什么你有 varchar? 因为我的 emp_id 列也包含字母数字值 你的 Datatable() 的一些默认选项是否可以改变你的出现顺序? 【参考方案1】:使用JSP Standard Tag Library 和JSP Expression Language,而不是使用更易于管理且不易出错的Scriplet
。使用SQL Tag Library,它提供了用于访问JSP 中的数据库的JSTL SQL 标签。
如果查询在数据库中给出了正确的结果,那么 UI 部分就有问题。使用JSTL SQL sql:query Tag 重试以下示例教程。
示例代码:
<%@ page import="java.io.*,java.util.*,java.sql.*"%>
<%@ page import="javax.servlet.http.*,javax.servlet.*"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>
<html>
<head>
<title>JSTL sql:query Tag</title>
</head>
<body>
<sql:setDataSource var="snapshot" driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost/TEST" user="root" password="pass123" />
<sql:query dataSource="$snapshot" var="result">
SELECT * from Employees;
</sql:query>
<table border="1" >
<tr>
<th>Emp ID</th>
<th>First Name</th>
<th>Last Name</th>
<th>Age</th>
</tr>
<c:forEach var="row" items="$result.rows">
<tr>
<td><c:out value="$row.id" /></td>
<td><c:out value="$row.first" /></td>
<td><c:out value="$row.last" /></td>
<td><c:out value="$row.age" /></td>
</tr>
</c:forEach>
</table>
</body>
</html>
现在尝试访问上面的JSP,应该会显示如下结果:
【讨论】:
Braj 我试过你的代码......但我仍然得到相同的......排序顺序 您是否尝试过使用基本table
结构而不是使用jQuery
的示例代码?这是与jQuery
相关的问题
如何添加jquery文件...?和使用 标签 一样吗
阅读jQuery adding to JSP page【参考方案2】:
可能是您的 jquery 采用默认排序样式...
【讨论】:
以上是关于Mysql ORDER BY length(col), col 不工作的主要内容,如果未能解决你的问题,请参考以下文章
转转转---ROWNUMBER() OVER( PARTITION BY COL1 ORDER BY COL2)用法
oracle的row_number() OVER (ORDER BY COL2 asc)和row_number() OVER (PARTITION BY COL1 ORDER BY COL2)的用法
如何与“row_number() over (partition by [Col] order by [Col])”相反
分析函数系列之sum(col1) over(partition by col2 order by col3):实现分组汇总或递增汇总