如何从列表中获取并分配数字-JDBC JAVA SQL
我的数据库有问题,我想从一系列股票中选择,而不是主键,然后将它们分配给系统中的用户 例如,我有一个名为stockCodes的字段,它由CAB001-CAB100这样的代码组成。这不是主键,主键实际上是stockID 这张桌子看起来像这样如何从列表中获取并分配数字-JDBC JAVA SQL,java,mysql,sql,jdbc,Java,Mysql,Sql,Jdbc,我的数据库有问题,我想从一系列股票中选择,而不是主键,然后将它们分配给系统中的用户 例如,我有一个名为stockCodes的字段,它由CAB001-CAB100这样的代码组成。这不是主键,主键实际上是stockID 这张桌子看起来像这样 ID | Stock Codes -------------------- 1 | CAB001-CAB100 2 | CBA100-CBA200 现在,我如何分解股票代码,以便在Java中得到这样一个列表 CAB001 CAB002 CAB003 CAB
ID | Stock Codes
--------------------
1 | CAB001-CAB100
2 | CBA100-CBA200
现在,我如何分解股票代码,以便在Java中得到这样一个列表
CAB001
CAB002
CAB003
CAB004
CAB005
请帮助。您必须解析文本-它们是否始终遵循相同的3个字母和3个数字格式?如果是这样的话,就可以采取这样的措施:
/**
* Populate a full list of stocks from a given range
*
* @param stockRange the stock range pulled from the DB, in this format: "XXX###-XXX###"
* @return list of all stocks in the specified range
*/
public List<String> getFullStockRange(final String stockRange) {
final String[] values = stockRange.split("-");
final Integer first = Integer.parseInt(values[0].substring(3));
final Integer last = Integer.parseInt(values[1].substring(3));
final String prefix = values[0].substring(0, 3);
final List<String> list = new LinkedList<>();
for (int i = first; i<= last; i++) {
final String entry = String.format("%s%03d", prefix, i);
list.add(entry);
}
return list;
}
So可能重复,您有一个包含CAB001-CAB100的字符串,您希望将其拆分为CAB001和CAB100,然后生成CAB002、CAB003等之间的所有值。这与数据库有什么关系?使用字符串。格式%s%03d,前缀,i以避免创建额外的,不必要的StringBuilder。@SamJones我在使用列表时不断出错。它一直说“类型列表不接受任何参数”。最后我使用LinkedList而不是List,并不断得到java.lang.NumberFormatException错误。我想这是因为一些优惠券代码就像101230的饮料。非常感谢你的帮助。如果你能给我指出正确的方向,我将不胜感激。哦,是的,对不起,我更改了优惠券,优惠券的前三位数字是101,接下来的六位数字是唯一的。@user3438012好吧,如果情况更复杂,你必须建立逻辑来处理它。我不确定您在这里到底更改了什么-如果您更新了描述以匹配,这将有所帮助。@SamJones假设前3位数字将是CAB。。然后是8个数字,如00000001-9999999,那么CAB00000001-CAB9999999我们如何重新排列您上面给出的代码以匹配此值?谢谢你的光临advance@user3438012这只是将数字的位数改为零,然后填充你的数字——这应该很容易从我发布的代码中看出。请参见String.format行