2012-04-03 29 views
2

一個角色,我有兩列X和Y其中的值可能如下:substringing在DB2

X  Y 
-------------- 
rob  one.1 
rob  two.2 
rob  abc.3 
rob  pqr.4 
harry lmn.3 
harry lkja.4 
harry lkjs.6 

我上查詢列X.也就是說

select Y where X='rob' 
select Y where X='harry' 

我想在上面的列上寫上一個查詢,其輸出將是字符串,如「rob#1,2,3,4」和「harry#3,4,6」

因此,結果字符串的第一部分將是X值接着是一個常數#然後是Y aft中的數字呃'。'點。

所以搶得到1,2,3,4和哈里3,4,6

感謝您閱讀

回答

1

我實現它使用聚合db2中的函數:

concat('Harry # ',substr(xmlserialize(xmlagg(xmltext(concat(', ', substr(myTable.salary, locate('.',myTable.salary)+1)))) as varchar(1024)), 3)) 
-1

這裏是一個concatination的例子:

它要走的路與您的問題..

SQL CONCAT()函數用於連接兩個或多個字符串。 MySQL允許你連接兩個以上的字符串,而其他的則強制兩個字符串。下面是語法:

CONCAT(expression) 

下面是Concat的員工的名字和他的工資在MySQL查詢:

SELECT CONCAT(name,':',salary) as name_salary 
    FROM employees 

這裏是輸出:

name_salary  
---------------- 
jack:3000.00 
mary:2500.00 
newcomer:2000.00 
anna:2800.00 
Tom:2700.00  
foo:4700.00  
+0

你會想要什麼要做的是concat子查詢(從表中選擇右(CHARINDEX(Y,'。')) – 2012-04-03 12:45:01

+0

您將需要創建一個循環或一個Temptable .. – 2012-04-03 12:45:29

+0

您給出的解決方案是一個簡單的連接...然而,這個要求要複雜得多..薪水部分來自三個不同的行,輸出應該是名字:sal1,sal2,sal3 ---以這種格式... – Nik 2012-04-09 05:18:53