【发布时间】:2013-07-01 10:47:45
【问题描述】:
我正在使用 JSP + Servlets 和 Oracle10 作为后端 开发一个 Web 应用程序。 p>
我有一个用于存储客户相关信息的表:
|ID |Name |City |
|N0001 |ABC |NASIK |
|N0002 |PQR |NASIK |
|N.... |... |NASIK |
|N9999 |XYZ |NASIK |
|N10000 |LMN |NASIK |
|N10001 |MNO |NASIK |
上表中ID是一个主键,它是根据City自动生成的(City的第一个字符+数字(数字必须至少4个字符长,所以对于第一个ID,三个前导零将被添加到数字))
For Generating ID:
我正在使用以下查询从表中获取最大 ID,然后使用一些 java 代码自动生成下一个 ID。
query = "select ID from CUST where CITY='NASIK' order by ID desc";
然后从ResultSet 获取第一个ID,这与预期的一样,直到ID 达到N9999,但是当ID 为N10000 或更高时,查询将N9999 作为最大@ 987654334@.
N9999之后的输出:
ID
----------
N9999
N10001
N10000
N0002
N0001
预期输出
ID
----------
N10001
N10000
N9999
N0002
N0001
所以我的问题是上面的查询有什么问题吗?或者有没有更好的方法来自动生成包含字符串的 ID。
编辑1
我的要求是自动生成ID,它将在起始位置包含字符。
【问题讨论】:
-
从 CUST 中选择 ID,其中 CITY='NASIK' order by substr(ID,2) desc
标签: java oracle auto-generate