当前位置: 代码迷 >> java >> 如何使用逗号从数据库表的特定列中拆分值?
  详细解决方案

如何使用逗号从数据库表的特定列中拆分值?

热度:51   发布时间:2023-07-25 19:01:11.0

我有一个名为Product表,其中包含名为PriceWithDescription列。

上面提到的该表的列包含如下数据。

1>  pricevalue : One,and more ,pricevalue : two

我想分割值,以便得到如下结果。

1> pricevalue : One,and more
2> pricevalue : two

当我使用“,”分割数据时,它给我的结果如下。

1> pricevalue : One
2> and more
3> pricevalue : two

因此,当值本身包含逗号作为值时,分割值的最佳方法是什么。

谢谢

考虑重新设计表结构,使其更适合存储键值对。

但是你可以使用正前瞻:只需要拆分是否有另一种:来了,而且不能有任何,在此之前。 这导致类似:

,(?=[^,]*?:)

Java代码:

String s = "pricevalue : One,and more ,pricevalue : two,something else : abc , def";

String[] ss = s.split(",(?=[^,]*?:)");
for(String si : ss) {
    System.out.println(si);
}

输出:

pricevalue : One,and more 
pricevalue : two
something else : abc , def

您可能想使用带有正则表达式的正则表达式使用String#split来获取pricevalue

,(?=pricevalue)

String str = "pricevalue : One,and more ,pricevalue : two";
String[] splitted = str.split(",(?=pricevalue)");
for (String s : splitted) {
    System.out.println(s);
}

打印

pricevalue : One,and more 
pricevalue : two

这是您可以做的。

1)使用此代码'something.split("pricevalue :")'

这将返回三个元素。

2)忽略第一个元素。

3)对于不是最后一个元素的所有元素,请删除字符串末尾的逗号。

你会得到的。

1> pricevalue : One,and more
2> pricevalue : two
  相关解决方案