我有一个任务将列从 SQL 语句中拆分出来。这对我来说效果很好,在“,”上进行了简单的 Java 分割。但现在我遇到了列内额外逗号的问题。 我想这个问题的答案很简单,但我不会想到。
示例:
来源:
"Col_A BIGINT , COL_B TIMESTAMP , COL_C DECIMAL(10,30) , COL_D VARCHAR(20)"
我想要的输出:
Array[0] = Col_A BIGINT
Array[1] = COL_B TIMESTAMP
Array[2] = COL_C DECIMAL(10,30)
Array[3] = COL_D VARCHAR(20)
真实(和显而易见的)输出:
Array[0] = Col_A BIGINT
Array[1] = COL_B TIMESTAMP
Array[2] = COL_C DECIMAL(10
Array[3] = 30)
Array[4] = COL_D VARCHAR(20)
明显的问题是两个小数之间的逗号 (COL_C)。
现在我想问你这个问题是否有一个好的解决方案。我真的想使用单个拆分来接收不同的列。但如何避免小数点描述处的错误分割。
希望大家能够理解我的问题。英语不是我的母语。
最佳答案
您只需使用正则表达式分割给定的字符串:,(?!\d)
找到后面不跟数字的,
。
代码示例:
System.out.println(Arrays.toString("Col_A BIGINT , COL_B TIMESTAMP , COL_C DECIMAL(10,30) , COL_D VARCHAR(20)".split(",(?!\\d)")));
关于java - 简单 SQL 正则表达式的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38783688/