2014-01-15 39 views
2

的數字字符串我有一個表有兩列:id, datastring蜂巢QL選擇串

id列只是一個BIGINT和datastring列有看起來像

{"12345":[6789,true]} 

{"1234678":[5678, false]} 

我想元素選擇一個表,其中第一列是id,第二列是數據字符串的引號部分中的數字。但是,這個數字並不總是相同的數字位數。

結果應該是提前

id, numstring 

4321, 12345 
4322, 134678 

感謝。

回答

2

您至少有兩個選項。第一個是緩慢和乾淨的,第二個是快速和骯髒的。

讓我們先從第二個方案 - 內置蜂巢功能regexp_extract

SELECT id, regexp_extract(datastring, '^\\{"(\\d+)".*$', 1) AS numstring 
    FROM your_table 

完成!

regexp_extract需要三個參數:字符串,正則表達式和組索引。如果正則表達式匹配字符串,則regexp_extract返回由組索引指定的正則表達式組。

第一個選擇是用Java編寫自己的UDF,它將使用Jackson或其他任何方法從數據字符串中提取numstring。我會去與regexp_extract。但那是我。