[英]Java Streams -> Extract value at a particular index from List<List<String>>
[英]Is there any way to extract a particular part of string from column value in mysql or java?
在第一次出現價格之前,我只想顯示列值中字符串的一部分。
例如:
物料清單 9W BDQ 3285 9W 物料清單 3285 INR6570END XT 380WO113
AMD EK X/DXB EK MUC 1241.36CWE1SIN1/LNE3 EK X/DXB
BDQ 9W MAA 6300 INR6300END
輸出 :
BDQ
穆克
馬航
只因為日子又變長了……
DROP TABLE IF EXISTS my_table;
CREATE TABLE my_table
(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,string VARCHAR(30) NOT NULL);
INSERT INTO my_table (string) VALUES
('BOM 9W BDQ 3285 9W BOM 3285 INR6570END XT 380WO113'),
('AMD EK X/DXB EK MUC 1241.36CWE1SIN1/LNE3 EK X/DXB'),
('BDQ 9W MAA 6300 INR6300END');
DROP TABLE IF EXISTS ints;
CREATE TABLE ints(i INT NOT NULL AUTO_INCREMENT PRIMARY KEY);
INSERT INTO ints VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
SELECT b.*
FROM
( SELECT id,SUBSTRING_INDEX(SUBSTRING_INDEX(string,' ',i+1),' ',-1) x, MIN(i) rank FROM my_table JOIN ints GROUP BY id,x ORDER BY id,rank
) a
JOIN
( SELECT id,SUBSTRING_INDEX(SUBSTRING_INDEX(string,' ',i+1),' ',-1) x, MIN(i) rank FROM my_table JOIN ints GROUP BY id,x ORDER BY id,rank
) b
ON b.id = a.id
AND b.rank = a.rank -1
WHERE a.x REGEXP '^[0-9]{4}';
+----+-----+------+
| id | x | rank |
+----+-----+------+
| 1 | BDQ | 2 |
| 2 | MUC | 4 |
| 3 | MAA | 2 |
+----+-----+------+
如果您想找到第一個價格,而不是全部,您應該嘗試以下操作:
^.*?(\w+?)\s\d+(\s|\.)
並為第一組進行匹配,即(\\w+?)
定義的組。
用於分隔我使用的價格(\\s|\\.)
因為我在第二行看到它可以包含一個點,這是真的嗎?
如果您想測試它,請使用此鏈接。
它可以使用簡單的java代碼完成
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Patrn {
public static void main(String[] args) {
//input strings
String eqn[] = { "BOM 9W BDQ 3285 9W BOM 3285 INR6570END XT 380WO113 "
," AMD EK X/DXB EK MUC 1241.36CWE1SIN1/LNE3 EK X/DXB "
," BDQ 9W MAA 6300 INR6300END " };
//match 4 digit numbers
Pattern p = Pattern.compile("-?\\d{4}+");
for(int i=0;i<eqn.length;i++){
Matcher m = p.matcher(eqn[i]);
//finding first match
if (m.find()) {
//m.start() used to find start position of matched substring
//print substring of original string from -4 position of matched
System.out.println(eqn[i].substring(m.start()-4,m.start()-1));
}
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.