How to display the comma separeated values in a row in the form of coulmns?
Hi,
I have a table as shown below.
Table name: Projs
Project_Id Associates_List
proj1 2,3,4,5
proj2 2,5,1
We are looking at moving this data into a normalized format as shown below.
Project_Id Associates_List
proj1 2
proj1 3
proj1 4
proj1 5
proj2 2
proj2 5
proj2 1
How can we achieve this?
If anybody knows, please provide the soultion.
SQL> ed
Wrote file afiedt.buf
1 with t as (select 'proj1' as proj_id, '2,3,4,5' as asoc_list from dual union all
2 select 'proj2', '2,5,1' from dual)
3 -- END OF TEST DATA
4 select proj_id, asoc
5 from (
6 select proj_id
7 ,regexp_substr(asoc_list, '[^,]+', 1, rn) as asoc
8 from t
9 ,(select rownum rn
10 from dual
11 connect by rownum <= (select max(length(regexp_replace(asoc_list,'[^,]')))+1
12 from t
13 )
14 ) x
15 )
16 where asoc is not null
17* order by 1, 2
SQL> /
PROJ_ ASOC
proj1 2
proj1 3
proj1 4
proj1 5
proj2 1
proj2 2
proj2 5
7 rows selected.
SQL>Edited by: BluShadow on Oct 29, 2009 3:09 PM
reworded a.s.s. so that profanity checker doesn't complain.
Similar Messages
-
Need to format comma separated values in address line in Adobe Forms
Hi All,
I have one text in which fields are separated by comma. I want to display the text in a text field. But whenever there is a comma the text following it needs to be printed in the same text field on new line.
Is there any way to achieve this.
e.g. if the address line 01 = ABC, 01/123 XYZ, 890776
then the output should be printed as follows
ABC
01/123 XYZ
890776
Thanks...Hi,
You need to put the code in the java script where you ll read the text in the texfield and then read it in diff var on the basis of the comma and then print the various var as an output.
Hope this might help you.
Thanks
Pooja -
Comma Separated Value Taking too Much Time to Execute
Hi,
select ES_DIAGNOSIS_CODE DC from ecg_study WHERE PS_PROTOCOL_ID LIKE 'H6L-MC-LFAN'
The above query returns comma separated value from the above query.
I am using the query below to split the comma separated value but the below query is taking lot of time to return the data.
SELECT
select DC from (
with t as ( select ES_DIAGNOSIS_CODE DC from ecg_study WHERE PS_PROTOCOL_ID LIKE 'H6L-MC-LFAN' )
select REGEXP_SUBSTR (DC, '[^,]+', 1, level) DC from t
connect by level <= length(regexp_replace(DC,'[^,]*'))+1 )
Please suggest me is there any alternative way to do this comma separated value.
Thanks
SudhirNikolay Savvinov wrote:
Hi BluShadow,
I know that this function is fast with varchar2 strings from several years of using it. With CLOBs one may need something faster, but the OP didn't menion CLOBs.
Best regards,
NikolayJust because you perceive it to be fast doesn't mean it's faster than doing it in SQL alone.
For starters you are context switching from the SQL engine to PL/SQL to call it.
Then in your code you are doing this...
select substr(v_str,v_last_break+1, decode(v_nxt_break,0,v_length, v_nxt_break-v_last_break-1)) into v_result from dual;which is context switching back from the PL/SQL engine to the SQL engine for each entry in the string.
Why people do that I don't know... when PL/SQL alone could do it without a context switch e.g.
v_result := substr(v_str,v_last_break+1, case when v_nxt_break = 0 then v_length else v_nxt_break-v_last_break-1 end);So, if you still think it's faster than pure SQL (which is what the OP is using), please go ahead and prove it to us. -
Comma separated Values have repeated values
Find the Comma separated Values have repeated values
say
Str:= '123,abc,4566,4897996,46546546,ouiouiou,lhjlhlh,123,pojpoj,465465,123,poipoio,lahslka,'
The above sting has 123 repeated 3 times i need to make a note of it and intimate to user
can a Oracle Function does this?
Thanks!This is one way of doing so, using Pure Oracle functions:
with dat as
select ',' || '123,abc,4566,4897996,46546546,ouiouiou,lhjlhlh,123,pojpoj,465465,123,poipoio,lahslka,' col
from dual
select col, length(translate(lower(replace(col, ',123,', '~')), '~abcdefghijklmnopqrstuvwxyz1234567890-=+_)(*&^%$#@!<>?":|}{,.', '~')) occurances
from dat;
COL OCCURANCES
,123,abc,4566,4897996,46546546,ouiouiou,lhjlhlh,123,pojpoj,465465,123,poipoio,lahslka, 3 -
How can i get all these values in single row with comma separated?
I have a table "abxx" with column "absg" Number(3)
which is having following rows
absg
1
3
56
232
43
436
23
677
545
367
xxxxxx No of rows
How can i get all these values in single row with comma separated?
Like
output_absg
1,3,56,232,43,436,23,677,545,367,..,..,...............
Can you send the query Plz!These all will do the same
create or replace type string_agg_type as object
2 (
3 total varchar2(4000),
4
5 static function
6 ODCIAggregateInitialize(sctx IN OUT string_agg_type )
7 return number,
8
9 member function
10 ODCIAggregateIterate(self IN OUT string_agg_type ,
11 value IN varchar2 )
12 return number,
13
14 member function
15 ODCIAggregateTerminate(self IN string_agg_type,
16 returnValue OUT varchar2,
17 flags IN number)
18 return number,
19
20 member function
21 ODCIAggregateMerge(self IN OUT string_agg_type,
22 ctx2 IN string_agg_type)
23 return number
24 );
25 /
create or replace type body string_agg_type
2 is
3
4 static function ODCIAggregateInitialize(sctx IN OUT string_agg_type)
5 return number
6 is
7 begin
8 sctx := string_agg_type( null );
9 return ODCIConst.Success;
10 end;
11
12 member function ODCIAggregateIterate(self IN OUT string_agg_type,
13 value IN varchar2 )
14 return number
15 is
16 begin
17 self.total := self.total || ',' || value;
18 return ODCIConst.Success;
19 end;
20
21 member function ODCIAggregateTerminate(self IN string_agg_type,
22 returnValue OUT varchar2,
23 flags IN number)
24 return number
25 is
26 begin
27 returnValue := ltrim(self.total,',');
28 return ODCIConst.Success;
29 end;
30
31 member function ODCIAggregateMerge(self IN OUT string_agg_type,
32 ctx2 IN string_agg_type)
33 return number
34 is
35 begin
36 self.total := self.total || ctx2.total;
37 return ODCIConst.Success;
38 end;
39
40
41 end;
42 /
Type body created.
[email protected]>
[email protected]> CREATE or replace
2 FUNCTION stragg(input varchar2 )
3 RETURN varchar2
4 PARALLEL_ENABLE AGGREGATE USING string_agg_type;
5 /
CREATE OR REPLACE FUNCTION get_employees (p_deptno in emp.deptno%TYPE)
RETURN VARCHAR2
IS
l_text VARCHAR2(32767) := NULL;
BEGIN
FOR cur_rec IN (SELECT ename FROM emp WHERE deptno = p_deptno) LOOP
l_text := l_text || ',' || cur_rec.ename;
END LOOP;
RETURN LTRIM(l_text, ',');
END;
SHOW ERRORS
The function can then be incorporated into a query as follows.
COLUMN employees FORMAT A50
SELECT deptno,
get_employees(deptno) AS employees
FROM emp
GROUP by deptno;
###########################################3
SELECT SUBSTR(STR,2) FROM
(SELECT SYS_CONNECT_BY_PATH(n,',')
STR ,LENGTH(SYS_CONNECT_BY_PATH(n,',')) LN
FROM
SELECT N,rownum rn from t )
CONNECT BY rn = PRIOR RN+1
ORDER BY LN desc )
WHERE ROWNUM=1
declare
str varchar2(32767);
begin
for i in (select sal from emp) loop
str:= str || i.sal ||',' ;
end loop;
dbms_output.put_line(str);
end;
COLUMN employees FORMAT A50
SELECT e.deptno,
get_employees(e.deptno) AS employees
FROM (SELECT DISTINCT deptno
FROM emp) e;
DEPTNO EMPLOYEES
10 CLARK,KING,MILLER
20 SMITH,JONES,SCOTT,ADAMS,FORD
30 ALLEN,WARD,MARTIN,BLAKE,TURNER,JAMES
CREATE OR REPLACE FUNCTION concatenate_list (p_cursor IN SYS_REFCURSOR)
RETURN VARCHAR2
IS
l_return VARCHAR2(32767);
l_temp VARCHAR2(32767);
BEGIN
LOOP
FETCH p_cursor
INTO l_temp;
EXIT WHEN p_cursor%NOTFOUND;
l_return := l_return || ',' || l_temp;
END LOOP;
RETURN LTRIM(l_return, ',');
END;
COLUMN employees FORMAT A50
SELECT e1.deptno,
concatenate_list(CURSOR(SELECT e2.ename FROM emp e2 WHERE e2.deptno = e1.deptno)) employees
FROM emp e1
GROUP BY e1.deptno;
DEPTNO EMPLOYEES
10 CLARK,KING,MILLER
20 SMITH,JONES,SCOTT,ADAMS,FORD
30 ALLEN,WARD,MARTIN,BLAKE,TURNER,JAMES
CREATE OR REPLACE TYPE t_string_agg AS OBJECT
g_string VARCHAR2(32767),
STATIC FUNCTION ODCIAggregateInitialize(sctx IN OUT t_string_agg)
RETURN NUMBER,
MEMBER FUNCTION ODCIAggregateIterate(self IN OUT t_string_agg,
value IN VARCHAR2 )
RETURN NUMBER,
MEMBER FUNCTION ODCIAggregateTerminate(self IN t_string_agg,
returnValue OUT VARCHAR2,
flags IN NUMBER)
RETURN NUMBER,
MEMBER FUNCTION ODCIAggregateMerge(self IN OUT t_string_agg,
ctx2 IN t_string_agg)
RETURN NUMBER
SHOW ERRORS
CREATE OR REPLACE TYPE BODY t_string_agg IS
STATIC FUNCTION ODCIAggregateInitialize(sctx IN OUT t_string_agg)
RETURN NUMBER IS
BEGIN
sctx := t_string_agg(NULL);
RETURN ODCIConst.Success;
END;
MEMBER FUNCTION ODCIAggregateIterate(self IN OUT t_string_agg,
value IN VARCHAR2 )
RETURN NUMBER IS
BEGIN
SELF.g_string := self.g_string || ',' || value;
RETURN ODCIConst.Success;
END;
MEMBER FUNCTION ODCIAggregateTerminate(self IN t_string_agg,
returnValue OUT VARCHAR2,
flags IN NUMBER)
RETURN NUMBER IS
BEGIN
returnValue := RTRIM(LTRIM(SELF.g_string, ','), ',');
RETURN ODCIConst.Success;
END;
MEMBER FUNCTION ODCIAggregateMerge(self IN OUT t_string_agg,
ctx2 IN t_string_agg)
RETURN NUMBER IS
BEGIN
SELF.g_string := SELF.g_string || ',' || ctx2.g_string;
RETURN ODCIConst.Success;
END;
END;
SHOW ERRORS
CREATE OR REPLACE FUNCTION string_agg (p_input VARCHAR2)
RETURN VARCHAR2
PARALLEL_ENABLE AGGREGATE USING t_string_agg;
/ -
How to seach for a particular text in comma separated values
Hi,
I have one table for eg. TB_Fruits.
In that i have one column FruitsName(Varchar)
In that column i am storing string in comma separated values.
Select FruitsName from tb_fruits;
Result: orange,banana,apple
Now the issue is suppose if i try to insert any of these fruits name again then it should not allow me to insert.
Suppose now if i try to insert ('grapes,banana')
or
('apple,grapes')
the orange,banana,apple can be in any position.
How to check if any of these names already exist or not in the column fruitsname?
I cannot use like or INstr function here. because the position is not fixed not even string.
Appreciate any help.After doing search.
Got to know <= 3 length in word is in stoplist.
That's why the value ALL it was not searching in index.
After modifying the index this problem is solved.
CREATE INDEX
Fruitsname_idx ON tb_fruits (FruitsName)
indextype is ctxsys.context
PARAMETERS('SYNC ( ON COMMIT)
stoplist ctxsys.empty_stoplist');
But now the issue is suppose i have value with space..
i inserted one more row with value 'FRUITS YELLOW'
So in the index it is storing two rows....one is for FRUITS and second is for YELLOW.
select * from tb_fruits t where contains(t.FruitsName,'FRUITS')>0
I will get record..but actually there should be no record.
And it should allow me to insert. So i can insert the value FRUITS in more row.
Any help on how to store the value with space in one row in index?? -
The selected file does not appear to be a valid comma separated values (csv) file or a valid tab delimited file. Choose a different file.
I guess your question is, "what's wrong with the file?"
You're going to have to figure that out yourself, as we cannot see the file.
Importing into Address book requires either a tab-delimited or a comma-delimited file. You can export out of most spreadsheets into a csv file. However, you need to make sure you clean up the file first. If you have a field that has commas in the field, they will create new fields at the comma. So, some lines will have more fields than the others, causing issues like the error you saw. -
How to query the comma seperated values stored in Database
Hi,
I have a strange scenario, I am storing the specific data as a comma seperated value in the database. I want to query the DB with the comma seperated value as a Bind variable against the comma seperated value stored in DB.
For eg : The data stored in DB has
Row1 - > 1,2,3,4,5,6,7,8
Row2 - > 4,5,6,7,8,9,10
When I pas the Bind variable as '4,8' I should get Row1 and Row2 .
Quick help his highly appreciated.. Thanks in AdvanceOh, and if you actually wanted the data returned rather than just the row primary keys....
SQL> ed
Wrote file afiedt.buf
1 with t as (select 1 as rw, '1,2,3,4,5,6,7,8' as txt from dual union all
2 select 2, '4,5,6,7,8,9,10' from dual union all
3 select 3, '1,6,7,9' from dual)
4 -- end of test data
5 ,r as (select '4,8' as req from dual)
6 -- end of required data
7 ,split_t as (select rw, regexp_substr(txt, '[^,]+', 1, rn) as val
8 from t, (select rownum rn from dual connect by rownum <= (select max(length(regexp_replace(t.txt, '[^,]'))+1) from t))
9 where regexp_substr(txt, '[^,]+', 1, rn) is not null
10 )
11 ,split_r as (select regexp_substr(req, '[^,]+', 1, rownum) as val
12 from r
13 connect by rownum <= length(regexp_replace(req, '[^,]'))+1
14 )
15 --
16 select distinct t.rw, t.txt
17 from split_t st join split_r sr on (st.val = sr.val)
18 join t on (t.rw = st.rw)
19* order by 1
SQL> /
RW TXT
1 1,2,3,4,5,6,7,8
2 4,5,6,7,8,9,10
SQL> -
Here is my dilemma. I am an archivist at an arts organization and we are in the process of digitizing many of our materials to post them on the web and make them available to internet users. One of the principle components of our collection is a large trove of photographs. We have been in the process of digitizing these images and embedding metadata (in the Caption/Description, Author/Photographer and Copyright fields) via PhotoShops File Info command.
Now I am at a crossroads. We need to extract this metadata and transfer it into a comma separated value form, like an Excel spreadsheet or a FileMakerPro database. I have been told that it is not possible to do this through PhotoShop, that I must run a script through Acrobat or Bridge. I have no clue how to do this. I have been directed to a couple of links.
First I was directed to this (now dead) link: http://www.barredrocksoftware.com/products.html
The BSExportMetadata script allegedly exports the metadata from files selected in Adobe's Bridge into a comma separated value (CSV) file suitable for import into Excel, Access and most database programs. It installs as a Bridge menu item making it simple to use. The the Export Metadata script provides you with an easy to use wizard allowing you to select associated information about a set of images that you can then export. This script requires Creative Suite 2 (CS2). This script sounds like it does exactly what I want to do, but unfortunately, it no longer exists.
Then I found this:
Arnold Dubin, "Script to Export and Import Keywords and Metadata" #13, 8 Aug 2005 7:23 am
I tried this procedure, but nothing seemed to happen. I also tried to copy the script into the JAVASCRIPT action option in Acrobat, but I received a message that the script had an error. It also seems to me that this script does not set up a dumping point, that is, a file into which this information will be exported to.
I am a novice, not a code writer or a programmer/developer. I need a step-by-step explanation of how to implement this filtering of information. We have about 2000 jpeg and tiff files, so I would rather not go through each file and copy and paste this information elsewhere. I need to find out how to create a batch process that will do this procedure for me. Can anyone help?Hello -
Is anyone aware of a tool that will do the above that is available for mac? Everything I've found so far seems to be PC only.
Any help is appreciated, thanks! -
Query on column with comma separated values
I have a proposed table with unnormalized data like the following:
ID COLA COLB REFLIST
21 xxx zzz 24,25,78,412
22 xxx xxx 21
24 yyy xxx 912,22
25 zzz fff 433,555,22
.. ... ... ...There are 200 million rows. There is maximum of about 10 IDs in the REFLIST, though typically two or three. How could I efficiently query this data on the REFLIST column? e.g. something like:
SELECT id FROM mytable WHERE :myval in reflistLogically there is a many to many relationship between rows in this table. The REFLIST column contains pointers to ID values elsewhere in the table. The data could be normalized so that the relationship keys are in a separate table (in fact this is the current solution that we want to change).
ID REF
21 24
21 25
21 78
21 412
22 21
24 912
... ...The comma separated list seems instinctively like a bad idea, however there are various reasons for proposing it. The main reason is because the source for this data has it structured like the REFLIST example. It is an OLTP-like system rather than a data warehouse. The source code (and edit performance) would benefit greatly from not having to maintain the relationship table as the data changes.
Going back to querying the REFLIST column, the problem seems to be building an approriate index for the data. The ideas proposed so far are:
<li>Make a materialized view that presents the relationships as normalized (e.g. as in the example with ID, REF columns above), then index the plain column - the various methods of writing the view SQL have been widely posted.
<li>Use a Oracle Text Index (not something I have ever had call to use before).
Any other ideas? Its Oracle 10.2, though 11g could be possible.
Thanks
JimSomething like this ?
This is test demo on my 11.2.0.1 Windows XP
SQL> create table test (id number,reflist varchar2(30));
Table created.
SQL> insert into test values (21,'24,25,78,412');
1 row created.
SQL> insert into test values (22,'21');
1 row created.
SQL> insert into test values (24,'912,22');
1 row created.
SQL> insert into test values (25,'433,555,22');
1 row created.
SQL> select * from test
2 where
3 ',' || reflist || ',' like '%,22,%';
ID REFLIST
24 912,22
25 433,555,22
SQL>Source:http://stackoverflow.com/questions/7212282/is-it-possible-to-query-a-comma-separated-column-for-a-specific-value
Regards
Girish Sharma
Edited by: Girish Sharma on Jul 12, 2012 2:31 PM -
Converting the comma seperator value format
i am getting the content of a table in a internal table with comma separator value format, dynamically by using dfies table i am getting the header of the table, and displaying it in the output, now my query is that the content of the data which i am getting in a itab having only one field of type string
data : begin of itab occurs 0,
data1 type string,
end of itab.
some where they were concatenating the content of the data and storing it inthe itab, now i want the content of the itab should be displayed corresponding to there header in the outputHi Santosh,
You can remove the commas from the record by using the REPLACE command as below -
LOOP AT itab.
DO.
REPLACE ',' WITH '' INTO itab-data1.
IF sy-subrc NE 0.
EXIT.
ENDIF.
ENDDO.
ENDLOOP.
Reward points if found useful...!
Cheers
Abhishek -
Enable comma separated values (CSV) output
I am trying to figure out how to (Enable comma separated values (CSV) output ) for a report. Do you have an example or info on how to do that?
Can you provide an example on how you completed the setup? I am in the same boat but can't find an example to this subject
-
How to read a comma separated file in web dynpro for java?
Hi,
I am new to web dynpro for java, i am trying to develop an application where i am uploading file which is a comma separated file i need to read the content of it and then call an rfc pass those values to it. i have created the ui for the afforesaid.
How do i read the content and call the RFC please help
ThanksHi Anumeha,
Perhaps your question can be answered in the Web Dynpro Java .
Thank you.
Regards,
Jan -
How to display my input history values on Filename filed (selection screen)
Hi All,
Please let me know how to display my input history values under the field of selection screen.
I created Zprogram as below.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
PARAMETERS: P_FILE TYPE RLGRAP-FILENAME OBLIGATORY.
SELECTION-SCREEN END OF BLOCK B1.
I displayed a selection screen of my Zprogram, my cursor put on P_FILE field, and enter BACKSPACE key,
so it doesn't display my input history values.
Of course I've selected Local Data History 'ON' of my GUI option,
so it's displayed my input history values on any other fields.
If you know why, please let me know.
Regards,
Rie.In the GUI options, there is also a setting for the maximum length of fields for storing the history, maybe it is set to small, as your selection field is length 128.
Alternatively you can switch to a STRING, I have observed that the history is displayed after the first letter is being entered (maybe dependent on GUI version, who knows...)
Thomas -
Unable to pass comma separated values for in clause
I have the following query : for :P_LEG_NUM Parameter when i am passing values like 1,2,5 as string type i am getting invalid number error... I have defined in clause for it but still it does not work.. For individual values like 2, etc it works... how can i pass comma separted values for this bind variable
select trip_number as prl_trip_number,
flight_number as prl_f_number,
trip_leg_id as prl_trip_leg_id,
leg_number as prl_leg_num,
dicao as prl_dicao,
etd_zulu as prl_etd_zulu,
aicao as prl_aicao,
eta_zulu as prl_eta_zulu,
to_char(etd_zulu,'DD-Mon-YYYY HH24:MI') as prl_cb_etd,
to_char(eta_zulu,'DD-Mon-YYYY HH24:MI') as prl_cb_eta,
diata as prl_diata,
aiata as prl_aiata,
(select client_name
from xxwfs_trip_header_details t_h
where t_h.trip_number = t_leg.trip_number) as prl_client_name,
(select to_char((select systimestamp at time zone 'GMT' from dual),'YYYY-MM-DD-HH24MI')
from dual) as prl_curr_zulu_date
from xxwfs_trip_leg_details t_leg
where 1=1
and t_leg.leg_number in nvl(:P_LEG_NUM,t_leg.leg_number)
and t_leg.trip_number = :P_trip_noThis is the problem know as <tt>'Varying IN List'</tt> issue.
Check this - SQL and PL/SQL FAQ
Maybe you are looking for
-
Hi. My ipod touch (3rd gen) will not turn off or resond to anything and will not connect to a computer. the screen will not go into sleep mode and i dont know what to do. help?
-
hi one guy stolen my iphone, and now i need my pictures which i have in my icloud i open my Apple id in icloud but i downlode just 20 pic how i got my all picturs in my pc?
-
Does anyone know how to open link in mail? iso7 Iphone4s
It seems to me that quite a few people are having the same problem. Does anyone have a solution to this yet? When i tap on a link in my mail and then tap open nothing happens. Someone please help!
-
Hi all, recentry, we do a upgrade from cc&b 2.1 to 2.2, a very stanger thing is we can't refer a tender source to the user when we creatign it, so is everyone here having the experience to handle this bug? Edited by: Eric ZHOU on 2010-7-30 上午3:33
-
Bottom slider doesn't work...among other things
I've had my iPad 3G 32GB for about 60 days or so. Just recently, I've been experiencing problem with my device. The home slider that reads (slide to unlock) is not working and seems to be stuck. It won't move as I slide the button to the right (IT'S