Return a pattern multiple times - sql

I have a column called comment that can contain a certain pattern as many as 5 times and I would like to return all of them. Here is the value I have in my colum:
oijdwe wbjcwe sbr ('JOJ.TTT.ABC', test) sdfjksj dlkfjs lkf qweiuh
('JOJ.TTT.123', test) oiiqwd m lskc qu i ('JOJ.TTT.452', test) ksd
sdfskq azx ('JOJ.TTT.ACD5', test)
I would like to return the following values: JOJ.TTT.ABC, JOJ.TTT.123, JOJ.TTT.452 and JOJ.TTT.ACD5
when using the following statement
select
regexp_substr(comment,'JOJ.T{3}.{4}',1,1)
,regexp_substr(comment,'JOJ.T{3}.{4}',1,2)
,regexp_substr(comment,'JOJ.T{3}.{4}',1,3)
,regexp_substr(comment,'JOJ.T{3}.{4}',1,4)
,regexp_substr(comment,'JOJ.T{3}.{4}',1,5)
from blabla
it works fine if the pattern is JOJ.TTT.XXX but not in case there are 4 caracters after "TTT.". I know this is because of the {4} I am using. How can I get the result I want?
Thanks

Use [^']+ to match until the next '.
select
regexp_substr(comment_,q'!JOJ.T{3}[^']+!',1,1) a,
regexp_substr(comment_,q'!JOJ.T{3}[^']+!',1,2) b,
regexp_substr(comment_,q'!JOJ.T{3}[^']+!',1,3) c,
regexp_substr(comment_,q'!JOJ.T{3}[^']+!',1,4) d,
regexp_substr(comment_,q'!JOJ.T{3}[^']+!',1,5) e
from blabla;
I have changed comment into comment_ since comment is a reserved keyword in Oracle.

While the . in the regular expression works for this purpose, it will also match things you don't want, since it is a wildcard character. Use \. to match a literal .. You can also use LEVEL and CONNECT BY so you needn't write out multiple calls to REGEXP_SUBSTR() explicitly:
WITH x AS (
SELECT 'oijdwe wbjcwe sbr (''JOJ.TTT.ABC'', test) sdfjksj dlkfjs lkf qweiuh (''JOJ.TTT.123'', test) oiiqwd m lskc qu i (''JOJ.TTT.452'', test) ksd sdfskq azx (''JOJ.TTT.ACD5'', test)' AS comment1
FROM dual
)
SELECT REGEXP_SUBSTR(comment1,'JOJ\.TTT\.[A-Z0-9]+', 1, LEVEL)
FROM x
CONNECT BY REGEXP_SUBSTR(comment1,'JOJ\.TTT\.[A-Z0-9]+', 1, LEVEL) IS NOT NULL;
See SQL Fiddle here.
It gets a little kludgier if you have multiple columns and want to return them all:
WITH x AS (
SELECT 1 AS id, 'oijdwe wbjcwe sbr (''JOJ.TTT.ABC'', test) sdfjksj dlkfjs lkf qweiuh (''JOJ.TTT.123'', test) oiiqwd m lskc qu i (''JOJ.TTT.452'', test) ksd sdfskq azx (''JOJ.TTT.ACD5'', test)' AS comment1
FROM dual
UNION ALL
SELECT 2 AS id, 'oijdwe wbjcwe sbr (''JOJ.TTT.ABC'', test) sdfjksj dlkfjs lkf qweiuh (''JOJ.TTT.123'', test) oiiqwd m lskc qu i (''JOJ.TTT.452'', test) ksd sdfskq azx (''JOJ.TTT.ACD5'', test)' AS comment1
FROM dual
)
SELECT id, REGEXP_SUBSTR(comment1,'JOJ\.TTT\.[A-Z0-9]+', 1, LEVEL)
FROM x
CONNECT BY REGEXP_SUBSTR(comment1,'JOJ\.TTT\.[A-Z0-9]+', 1, LEVEL) IS NOT NULL
AND PRIOR id = id
AND PRIOR DBMS_RANDOM.VALUE IS NOT NULL;
See SQL Fiddle here. Without the PRIOR clauses Oracle will return a cross join of the values of id and of comment1.
By the way, COMMENT is an Oracle reserved word and the above queries did not work in 11g r2 with a column named comment. That is why I used comment1 instead.
Alternately, you could use [^'']+ instead of [A-Z0-9]+ but given your example data I'm not sure that's what you want.

I found how to fix it
select
regexp_substr(comment,'JOJ.T[^'']+',1,1)
,regexp_substr(comment,'JOJ.T[^'']+',1,2)
,regexp_substr(comment,'JOJ.T[^'']+',1,3)
,regexp_substr(comment,'JOJ.T[^'']+',1,4)
,regexp_substr(comment,'JOJ.T[^'']+',1,5)
from blabla

Related

Merge 3 columns into 1 with multiple nested select

I have some data that i need to display on a path layer on deckgl inside super set, the format of the data has to be very specific or else it throws errors, the format is as such
[[],[],[]] anything else will throw errors. My data is in long and lat format which i was able to transform in to proper form, except that some lines are multistring which has this format [[[],[]],[[]]]. i am able to get it into proper format separately in 3 different columns, how do i merge these 3 into 1? tried union distinct by basing my self on this example, with an error "Expected keyword JOIN but got "," at [3:98]" how do i solve this?
SELECT * FROM Employee_Asia UNION DISTINCT SELECT * from
Employee_Europe
****
select * from(
(select replace(substring(geo,1),"[[[", "[[") as ngeo union
DISTINCT
(select replace
(substring(geo,1),"]]]", "]]")) union DISTINCT select replace
(substring(geo,1),"]],[[" ,"], [")), from(
****
select replace(substring(geo,1),"[[[", "[[") as ngeo, (select replace
(substring(geo,1),"]]]", "]]"))as xgeo, (select replace (substring(geo,1),"]],[[" ,"],
["))as zgeo,from(
select geo from (
SELECT
routeID , json_extract(st_asgeojson(st_makeline( array_agg(st_geogpoint(locs.lon,
locs.lat) order by locs.date))),'$.coordinates') as geo,
FROM
howardcounty.routebatches
cross join UNNEST(locations) as locs
where locs.date between {{start_date}} and {{end_date}}
group by routeID
order by routeID
limit 7
)where length(geo)-length(replace(geo,"]","")) > 1+4
)
here is a the result from the query without union, am also limited to select only.
[[-76.832895,39.20946],[-76.8328744528093,39.2094841310634],
[-76.8327537674778,39.2096258661087],[-76.8327516666667,39.2096283333333],
[-76.8326516666667,39.20973],[-76.8326416666667,39.2098316666667],
[-76.8327033333333,39.2099316666667],[-76.83284,39.2099916666667],
[-76.8329033333333,39.210025],[-76.8331,39.2101616666667],
[-76.8332383333333,39.2102366666667],[-76.8333933333333,39.2103233333333],
[-76.8335416666667,39.2103883333333],[-76.8336783333333,39.21044],
[-76.8338,39.2104816666667],[-76.83389,39.2105533333333],
[-76.83389633091,39.2105767090203],[-76.8339113352774,39.2106321097435],
[-76.8339116666667,39.2106333333333],[-76.8338887881129,39.2106764906686],
[-76.8338383333333,39.2107716666667],[-76.8337783333333,39.2108866666667],
[-76.8337710512136,39.2110192012812],[-76.83377,39.2110383333333],
[-76.8338232468397,39.2111109427531],[-76.83388,39.2111883333333],
[-76.8340466666667,39.2111883333333],[-76.834145,39.211135],
[-76.8341866666667,39.2110433333333],[-76.8342116666667,39.2110016666667],
[-76.83428,39.2108766666667],[-76.8343283333333,39.210795],[-76.83439,39.2107266666667],
[-76.8344492363899,39.2106641394387],[-76.83451,39.2106],[-76.834715,39.21045],
[-76.8349033333333,39.2103033333333],[-76.83497,39.21014],[-76.8349733333333,39.21006],
[-76.834985,39.21022],[-76.834865,39.2104133333333],[-76.83476,39.21059],
[-76.8347916666667,39.21075],[-76.8350466666667,39.2108316666667],
[-76.8352283333333,39.2107116666667],[-76.83532,39.2105266666667],
[-76.8354483333333,39.2103633333333],[-76.83555,39.21017],
[-76.8356666666667,39.2100466666667],[-76.8358216666667,39.21004],
[-76.8358733333333,39.2101316666667],[-76.8358316666667,39.2102883333333],
[-76.8359,39.210425],[-76.8358689842204,39.2104852071477],[-76.8358433333333,39.210535],
[-76.8356983333333,39.210565],[-76.8357383333333,39.210475],
[-76.8358689842204,39.2104852071477],[-76.8359516666667,39.2104916666667],
[-76.8360516666667,39.210455],[-76.8361533333333,39.2102916666667],
[-76.836285,39.210175],[-76.8364766666667,39.21023],[-76.8366683333333,39.21028],
[-76.8368166666667,39.210305],[-76.836955,39.2103233333333],
[-76.83699,39.2103183333333],[-76.8373016666667,39.2103166666667],
[-76.8374566666667,39.2103016666667],[-76.8376066666667,39.21029],
[-76.8377616666667,39.2103016666667],[-76.83795,39.210335],
[-76.8381333333333,39.2104033333333],[-76.83831,39.2105133333333],
[-76.8384333333333,39.2106416666667],[-76.8385183333333,39.210785],
[-76.8385616666667,39.210935],[-76.838585,39.2110366666667],
[-76.8386083333334,39.2111266666667],[-76.83865,39.211245],
[-76.8387166666667,39.211505],[-76.838855,39.2116916666667],
[-76.839035,39.2118216666667],[-76.8392,39.2119766666667],[-76.8393516666667,39.212125],
[-76.83948,39.21218],[-76.8395733333333,39.2121633333333],
[-76.8398377180994,39.212155736099],[-76.839863333316,39.2121550000005],
[-76.8398633333333,39.212155],[-76.839866248213,39.2121550000002],
[-76.8398683333333,39.212155],[-76.839885,39.212155]],
[[-76.839863333316,39.2121550000005],[-76.83984,39.212155],
[-76.8398377180994,39.212155736099],[-76.839685,39.212205],
[-76.8395033333333,39.212245],[-76.83924,39.2121616666667],
[-76.8390316666667,39.2119483333333],[-76.8388216666667,39.2117766666667],
[-76.8387066666667,39.21161],[-76.838545,39.21148],[-76.8383866666667,39.211435],
[-76.8381966666667,39.2114216666667],[-76.8380266666667,39.21142],
[-76.8378533333333,39.2114133333333],[-76.8376933333333,39.2114116666667],
[-76.837545,39.2113983333333],[-76.837365,39.2114166666667],
[-76.837145,39.2113883333333],[-76.83696,39.2113683333333],[-76.8368116666667,39.21135],
[-76.8366616666667,39.211345],[-76.8365166666667,39.21134],
[-76.836395,39.2113383333333],[-76.83635,39.21134],[-76.8361416666667,39.21133],
[-76.8359466666667,39.2112916666667],[-76.8358183333333,39.2112233333333],
[-76.8357733333333,39.2111683333333],[-76.8357366666667,39.211055],
[-76.8356816666667,39.2109716666667],[-76.83552,39.211005],
[-76.8353483333333,39.2109983333333],[-76.8351966666667,39.2109416666667],
[-76.835055,39.210885],[-76.8349033333333,39.21081],[-76.83475,39.2107766666667],
[-76.834625,39.2107333333333],[-76.83449,39.2106866666667],
[-76.8344492363899,39.2106641394387],[-76.8343633333333,39.2106166666667],
[-76.834205,39.21054],[-76.8340283333333,39.2105483333333],
[-76.833938122743,39.2106129286176],[-76.8339113352774,39.2106321097435],
[-76.8338933333333,39.210645],[-76.8338216666667,39.2107666666667],
[-76.83377,39.2108516666667],[-76.8337333333333,39.2109116666667],
[-76.8337122666612,39.2109696000596],[-76.8336933333333,39.2110216666667],
[-76.8337276727651,39.2110803760451],[-76.833745,39.21111],
[-76.8338232468397,39.2111109427531],[-76.8338833333333,39.2111116666667],
[-76.83392,39.211055],[-76.8339716666667,39.2109833333333],
[-76.8340783333333,39.2108283333333],[-76.8340766666667,39.210725],
[-76.8339833333333,39.2106566666667],[-76.8339611067922,39.2106613270793],
[-76.8338887881129,39.2106764906686],[-76.83388,39.2106783333333],
[-76.8338083333333,39.2108016666667],[-76.83373,39.2109366666667],
[-76.8337122666612,39.2109696000596],[-76.83366,39.2110666666667],
[-76.8335933333333,39.21119],[-76.8335266666667,39.211375],[-76.83353,39.2116183333333],
[-76.833635,39.2118683333333],[-76.8338283333333,39.212085],
[-76.8340583333333,39.2123116666667],[-76.8342483333333,39.21253],[-76.834345,39.21274],
[-76.8344233333333,39.212935],[-76.8343933333333,39.21316],
[-76.8345383333333,39.2133166666667],[-76.8347266666667,39.213195],
[-76.8345933333333,39.2129983333333],[-76.834455,39.2127816666667],
[-76.8343833333333,39.212615],[-76.834365,39.2125766666667],
[-76.83429,39.2124883333333],[-76.83412,39.21229],[-76.8339066666667,39.2120766666667],
[-76.8337066666667,39.21187],[-76.8336,39.2116516666667],
[-76.8335816666667,39.2114666666667],[-76.8336083333333,39.211325],
[-76.8336516666667,39.2112016666667],[-76.8337066666667,39.21111],
[-76.8337276727651,39.2110803760451],[-76.8337710512136,39.2110192012812],
[-76.8337716666667,39.2110183333333],[-76.8338516666667,39.2109],
[-76.83392,39.2108133333333],[-76.83396,39.2107166666667],
[-76.8339611067922,39.2106613270793],[-76.8339616666667,39.2106333333333],
[-76.833938122743,39.2106129286176],[-76.83389633091,39.2105767090203],
[-76.8338866666667,39.2105683333333],[-76.833715,39.2105016666667],
[-76.833595,39.2104533333333],[-76.83358,39.21045],[-76.833405,39.2103716666667],
[-76.83337,39.210365],[-76.8332116666667,39.2103166666667],[-76.8330966666667,39.21027],
[-76.83299,39.2102233333333],[-76.83286,39.2101766666667],
[-76.8327283333333,39.2101333333333],[-76.8325683333333,39.2100616666667],
[-76.832535,39.2100016666667],[-76.8325183333333,39.2098966666667],
[-76.8325066666667,39.2097333333333],[-76.8324919958592,39.209720248584],
[-76.8323833333333,39.2096233333333],[-76.8321633333333,39.2095333333333],
[-76.8320825997553,39.20948763515],[-76.8319866666667,39.2094333333333],
[-76.8319816666667,39.2092766666667],[-76.83207,39.2091466666667],[-76.832225,39.20905],
[-76.8323483333333,39.2091416666667],[-76.8322416666667,39.2093283333333],
[-76.8321066666667,39.209475],[-76.8320825997553,39.20948763515],
[-76.8319733333333,39.209545],[-76.831862668414,39.20954057341],
[-76.8318483333334,39.20954],[-76.8318415539569,39.2095171966764],
[-76.8318116666667,39.2094166666667],[-76.8318683333333,39.2093033333333],
[-76.8319233333333,39.209195],[-76.8318483333334,39.2091033333333],
[-76.8317466666667,39.2090916666667],[-76.8317216666667,39.209135],
[-76.8317866666667,39.2093583333333],[-76.83182,39.2094933333333],
[-76.8318415539569,39.2095171966764],[-76.831862668414,39.20954057341],
[-76.8319133333333,39.2095966666667],[-76.8318683333333,39.2097],
[-76.8318416666667,39.2097383333333],[-76.8318116666667,39.2098966666667],
[-76.8319366666667,39.2099516666667],[-76.832085,39.21],[-76.83213,39.21008],
[-76.8322416666667,39.2101083333333],[-76.832365,39.2100483333333],
[-76.8324283333333,39.20996],[-76.832475,39.209885],[-76.83249,39.20984],
[-76.8324919958592,39.209720248584],[-76.8324924676826,39.2096919391536],
[-76.8324933333333,39.20964],[-76.8325983333333,39.2094983333333],
[-76.8326833333333,39.2093466666667],[-76.83268,39.2091916666667],
[-76.8324833333333,39.2091266666667],[-76.8323283333333,39.2092133333333],
[-76.83233,39.209355],[-76.8323516666667,39.209475],
[-76.8323933333333,39.2096216666667],[-76.8324924676826,39.2096919391536],
[-76.832525,39.209715],[-76.8326783333333,39.2096816666667],
[-76.8327537674778,39.2096258661087],[-76.8328,39.2095916666667],
[-76.8328766666667,39.2095216666667],[-76.8329,39.20949],
[-76.8328744528093,39.2094841310634],[-76.8327766666667,39.2094616666667],
[-76.8327466666667,39.2095066666667],[-76.832685,39.209635],
[-76.83268,39.2096466666667]]] [[[-76.832895,39.20946],
[-76.8328744528093,39.2094841310634],[-76.8327537674778,39.2096258661087],
[-76.8327516666667,39.2096283333333],[-76.8326516666667,39.20973],
[-76.8326416666667,39.2098316666667],[-76.8327033333333,39.2099316666667],
[-76.83284,39.2099916666667],[-76.8329033333333,39.210025],[-76.8331,39.2101616666667],
[-76.8332383333333,39.2102366666667],[-76.8333933333333,39.2103233333333],
[-76.8335416666667,39.2103883333333],[-76.8336783333333,39.21044],
[-76.8338,39.2104816666667],[-76.83389,39.2105533333333],
[-76.83389633091,39.2105767090203],[-76.8339113352774,39.2106321097435],
[-76.8339116666667,39.2106333333333],[-76.8338887881129,39.2106764906686],
[-76.8338383333333,39.2107716666667],[-76.8337783333333,39.2108866666667],
[-76.8337710512136,39.2110192012812],[-76.83377,39.2110383333333],
[-76.8338232468397,39.2111109427531],[-76.83388,39.2111883333333],
[-76.8340466666667,39.2111883333333],[-76.834145,39.211135],
[-76.8341866666667,39.2110433333333],[-76.8342116666667,39.2110016666667],
[-76.83428,39.2108766666667],[-76.8343283333333,39.210795],[-76.83439,39.2107266666667],
[-76.8344492363899,39.2106641394387],[-76.83451,39.2106],[-76.834715,39.21045],
[-76.8349033333333,39.2103033333333],[-76.83497,39.21014],[-76.8349733333333,39.21006],
[-76.834985,39.21022],[-76.834865,39.2104133333333],[-76.83476,39.21059],
[-76.8347916666667,39.21075],[-76.8350466666667,39.2108316666667],
[-76.8352283333333,39.2107116666667],[-76.83532,39.2105266666667],
[-76.8354483333333,39.2103633333333],[-76.83555,39.21017],
[-76.8356666666667,39.2100466666667],[-76.8358216666667,39.21004],
[-76.8358733333333,39.2101316666667],[-76.8358316666667,39.2102883333333],
[-76.8359,39.210425],[-76.8358689842204,39.2104852071477],[-76.8358433333333,39.210535],
[-76.8356983333333,39.210565],[-76.8357383333333,39.210475],
[-76.8358689842204,39.2104852071477],[-76.8359516666667,39.2104916666667],
[-76.8360516666667,39.210455],[-76.8361533333333,39.2102916666667],
[-76.836285,39.210175],[-76.8364766666667,39.21023],[-76.8366683333333,39.21028],
[-76.8368166666667,39.210305],[-76.836955,39.2103233333333],
[-76.83699,39.2103183333333],[-76.8373016666667,39.2103166666667],
[-76.8374566666667,39.2103016666667],[-76.8376066666667,39.21029],
[-76.8377616666667,39.2103016666667],[-76.83795,39.210335],
[-76.8381333333333,39.2104033333333],[-76.83831,39.2105133333333],
[-76.8384333333333,39.2106416666667],[-76.8385183333333,39.210785],
[-76.8385616666667,39.210935],[-76.838585,39.2110366666667],
[-76.8386083333334,39.2111266666667],[-76.83865,39.211245],
[-76.8387166666667,39.211505],[-76.838855,39.2116916666667],
[-76.839035,39.2118216666667],[-76.8392,39.2119766666667],[-76.8393516666667,39.212125],
[-76.83948,39.21218],[-76.8395733333333,39.2121633333333],
[-76.8398377180994,39.212155736099],[-76.839863333316,39.2121550000005],
[-76.8398633333333,39.212155],[-76.839866248213,39.2121550000002],
[-76.8398683333333,39.212155],[-76.839885,39.212155]],
[[-76.839863333316,39.2121550000005],[-76.83984,39.212155],
[-76.8398377180994,39.212155736099],[-76.839685,39.212205],
[-76.8395033333333,39.212245],[-76.83924,39.2121616666667],
[-76.8390316666667,39.2119483333333],[-76.8388216666667,39.2117766666667],
[-76.8387066666667,39.21161],[-76.838545,39.21148],[-76.8383866666667,39.211435],
[-76.8381966666667,39.2114216666667],[-76.8380266666667,39.21142],
[-76.8378533333333,39.2114133333333],[-76.8376933333333,39.2114116666667],
[-76.837545,39.2113983333333],[-76.837365,39.2114166666667],
[-76.837145,39.2113883333333],[-76.83696,39.2113683333333],[-76.8368116666667,39.21135],
[-76.8366616666667,39.211345],[-76.8365166666667,39.21134],
[-76.836395,39.2113383333333],[-76.83635,39.21134],[-76.8361416666667,39.21133],
[-76.8359466666667,39.2112916666667],[-76.8358183333333,39.2112233333333],
[-76.8357733333333,39.2111683333333],[-76.8357366666667,39.211055],
[-76.8356816666667,39.2109716666667],[-76.83552,39.211005],
[-76.8353483333333,39.2109983333333],[-76.8351966666667,39.2109416666667],
[-76.835055,39.210885],[-76.8349033333333,39.21081],[-76.83475,39.2107766666667],
[-76.834625,39.2107333333333],[-76.83449,39.2106866666667],
[-76.8344492363899,39.2106641394387],[-76.8343633333333,39.2106166666667],
[-76.834205,39.21054],[-76.8340283333333,39.2105483333333],
[-76.833938122743,39.2106129286176],[-76.8339113352774,39.2106321097435],
[-76.8338933333333,39.210645],[-76.8338216666667,39.2107666666667],
[-76.83377,39.2108516666667],[-76.8337333333333,39.2109116666667],
[-76.8337122666612,39.2109696000596],[-76.8336933333333,39.2110216666667],
[-76.8337276727651,39.2110803760451],[-76.833745,39.21111],
[-76.8338232468397,39.2111109427531],[-76.8338833333333,39.2111116666667],
[-76.83392,39.211055],[-76.8339716666667,39.2109833333333],
[-76.8340783333333,39.2108283333333],[-76.8340766666667,39.210725],
[-76.8339833333333,39.2106566666667],[-76.8339611067922,39.2106613270793],
[-76.8338887881129,39.2106764906686],[-76.83388,39.2106783333333],
[-76.8338083333333,39.2108016666667],[-76.83373,39.2109366666667],
[-76.8337122666612,39.2109696000596],[-76.83366,39.2110666666667],
[-76.8335933333333,39.21119],[-76.8335266666667,39.211375],[-76.83353,39.2116183333333],
[-76.833635,39.2118683333333],[-76.8338283333333,39.212085],
[-76.8340583333333,39.2123116666667],[-76.8342483333333,39.21253],[-76.834345,39.21274],
[-76.8344233333333,39.212935],[-76.8343933333333,39.21316],
[-76.8345383333333,39.2133166666667],[-76.8347266666667,39.213195],
[-76.8345933333333,39.2129983333333],[-76.834455,39.2127816666667],
[-76.8343833333333,39.212615],[-76.834365,39.2125766666667],
[-76.83429,39.2124883333333],[-76.83412,39.21229],[-76.8339066666667,39.2120766666667],
[-76.8337066666667,39.21187],[-76.8336,39.2116516666667],
[-76.8335816666667,39.2114666666667],[-76.8336083333333,39.211325],
[-76.8336516666667,39.2112016666667],[-76.8337066666667,39.21111],
[-76.8337276727651,39.2110803760451],[-76.8337710512136,39.2110192012812],
[-76.8337716666667,39.2110183333333],[-76.8338516666667,39.2109],
[-76.83392,39.2108133333333],[-76.83396,39.2107166666667],
[-76.8339611067922,39.2106613270793],[-76.8339616666667,39.2106333333333],
[-76.833938122743,39.2106129286176],[-76.83389633091,39.2105767090203],
[-76.8338866666667,39.2105683333333],[-76.833715,39.2105016666667],
[-76.833595,39.2104533333333],[-76.83358,39.21045],[-76.833405,39.2103716666667],
[-76.83337,39.210365],[-76.8332116666667,39.2103166666667],[-76.8330966666667,39.21027],
[-76.83299,39.2102233333333],[-76.83286,39.2101766666667],
[-76.8327283333333,39.2101333333333],[-76.8325683333333,39.2100616666667],
[-76.832535,39.2100016666667],[-76.8325183333333,39.2098966666667],
[-76.8325066666667,39.2097333333333],[-76.8324919958592,39.209720248584],
[-76.8323833333333,39.2096233333333],[-76.8321633333333,39.2095333333333],
[-76.8320825997553,39.20948763515],[-76.8319866666667,39.2094333333333],
[-76.8319816666667,39.2092766666667],[-76.83207,39.2091466666667],[-76.832225,39.20905],
[-76.8323483333333,39.2091416666667],[-76.8322416666667,39.2093283333333],
[-76.8321066666667,39.209475],[-76.8320825997553,39.20948763515],
[-76.8319733333333,39.209545],[-76.831862668414,39.20954057341],
[-76.8318483333334,39.20954],[-76.8318415539569,39.2095171966764],
[-76.8318116666667,39.2094166666667],[-76.8318683333333,39.2093033333333],
[-76.8319233333333,39.209195],[-76.8318483333334,39.2091033333333],
[-76.8317466666667,39.2090916666667],[-76.8317216666667,39.209135],
[-76.8317866666667,39.2093583333333],[-76.83182,39.2094933333333],
[-76.8318415539569,39.2095171966764],[-76.831862668414,39.20954057341],
[-76.8319133333333,39.2095966666667],[-76.8318683333333,39.2097],
[-76.8318416666667,39.2097383333333],[-76.8318116666667,39.2098966666667],
[-76.8319366666667,39.2099516666667],[-76.832085,39.21],[-76.83213,39.21008],
[-76.8322416666667,39.2101083333333],[-76.832365,39.2100483333333],
[-76.8324283333333,39.20996],[-76.832475,39.209885],
[-76.83233,39.209355],[-76.8323516666667,39.209475],
[-76.8323933333333,39.2096216666667],[-76.8324924676826,39.2096919391536],
[-76.832525,39.209715],[-76.8326783333333,39.2096816666667],
[-76.8327537674778,39.2096258661087],[-76.8328,39.2095916666667],
[-76.8328766666667,39.2095216666667],[-76.8329,39.20949],
[-76.8328744528093,39.2094841310634],[-76.8327766666667,39.2094616666667],
[-76.8327466666667,39.2095066666667],[-76.832685,39.209635],
[-76.83268,39.2096466666667]] [[[-76.832895,39.20946],
[-76.8328744528093,39.2094841310634],[-76.8327537674778,39.2096258661087],
[-76.8327516666667,39.2096283333333],[-76.8326516666667,39.20973],
[-76.8326416666667,39.2098316666667],[-76.8327033333333,39.2099316666667],
[-76.83284,39.2099916666667],[-76.8329033333333,39.210025],[-76.8331,39.2101616666667],
[-76.8332383333333,39.2102366666667],[-76.8333933333333,39.2103233333333],
[-76.8335416666667,39.2103883333333],[-76.8336783333333,39.21044],
[-76.8338,39.2104816666667],[-76.83389,39.2105533333333],
[-76.83389633091,39.2105767090203],[-76.8339113352774,39.2106321097435],
[-76.8339116666667,39.2106333333333],[-76.8338887881129,39.2106764906686],
[-76.8338383333333,39.2107716666667],[-76.8337783333333,39.2108866666667],
[-76.8337710512136,39.2110192012812],[-76.83377,39.2110383333333],
[-76.8338232468397,39.2111109427531],[-76.83388,39.2111883333333],
[-76.8340466666667,39.2111883333333],[-76.834145,39.211135],
[-76.8341866666667,39.2110433333333],[-76.8342116666667,39.2110016666667],
[-76.83428,39.2108766666667],[-76.8343283333333,39.210795],[-76.83439,39.2107266666667],
[-76.8344492363899,39.2106641394387],[-76.83451,39.2106],[-76.834715,39.21045],
[-76.8349033333333,39.2103033333333],[-76.83497,39.21014],[-76.8349733333333,39.21006],
[-76.834985,39.21022],[-76.834865,39.2104133333333],[-76.83476,39.21059],
[-76.8347916666667,39.21075],[-76.8350466666667,39.2108316666667],
[-76.8352283333333,39.2107116666667],[-76.83532,39.2105266666667],
[-76.8354483333333,39.2103633333333],[-76.83555,39.21017],
[-76.8356666666667,39.2100466666667],[-76.8358216666667,39.21004],
[-76.8358733333333,39.2101316666667],[-76.8358316666667,39.2102883333333],
[-76.8359,39.210425],[-76.8358689842204,39.2104852071477],[-76.8358433333333,39.210535],
[-76.8356983333333,39.210565],[-76.8357383333333,39.210475],
[-76.8358689842204,39.2104852071477],[-76.8359516666667,39.2104916666667],
[-76.8360516666667,39.210455],[-76.8361533333333,39.2102916666667],
[-76.836285,39.210175],[-76.8364766666667,39.21023],[-76.8366683333333,39.21028],
[-76.8368166666667,39.210305],[-76.836955,39.2103233333333],
[-76.83699,39.2103183333333],[-76.8373016666667,39.2103166666667],
[-76.8374566666667,39.2103016666667],[-76.8376066666667,39.21029],
[-76.8377616666667,39.2103016666667],[-76.83795,39.210335],
[-76.8381333333333,39.2104033333333],[-76.83831,39.2105133333333],
[-76.8384333333333,39.2106416666667],[-76.8385183333333,39.210785],
[-76.8385616666667,39.210935],[-76.838585,39.2110366666667],
[-76.8386083333334,39.2111266666667],[-76.83865,39.211245],
[-76.8387166666667,39.211505],[-76.838855,39.2116916666667],
[-76.839035,39.2118216666667],[-76.8392,39.2119766666667],[-76.8393516666667,39.212125],
[-76.83948,39.21218],[-76.8395733333333,39.2121633333333],
[-76.8398377180994,39.212155736099],[-76.839863333316,39.2121550000005],
[-76.8398633333333,39.212155],[-76.839866248213,39.2121550000002],
[-76.8398683333333,39.212155],[-76.839885,39.212155],
[-76.839863333316,39.2121550000005],[-76.83984,39.212155],
[-76.8398377180994,39.212155736099],[-76.839685,39.212205],
[-76.8395033333333,39.212245],[-76.83924,39.2121616666667],
[-76.8390316666667,39.2119483333333],[-76.8388216666667,39.2117766666667],
[-76.8387066666667,39.21161],[-76.838545,39.21148],[-76.8383866666667,39.211435],
[-76.8381966666667,39.2114216666667],[-76.8380266666667,39.21142],
[-76.8378533333333,39.2114133333333],[-76.8376933333333,39.2114116666667],
[-76.837545,39.2113983333333],[-76.837365,39.2114166666667],
[-76.837145,39.2113883333333],[-76.83696,39.2113683333333],[-76.8368116666667,39.21135],
[-76.8366616666667,39.211345],[-76.8365166666667,39.21134],
[-76.836395,39.2113383333333],[-76.83635,39.21134],[-76.8361416666667,39.21133],
[-76.8359466666667,39.2112916666667],[-76.8358183333333,39.2112233333333],
[-76.8357733333333,39.2111683333333],[-76.8357366666667,39.211055],
[-76.8356816666667,39.2109716666667],[-76.83552,39.211005],
[-76.8353483333333,39.2109983333333],[-76.8351966666667,39.2109416666667],
[-76.835055,39.210885],[-76.8349033333333,39.21081],[-76.83475,39.2107766666667],
[-76.834625,39.2107333333333],[-76.83449,39.2106866666667],
[-76.8344492363899,39.2106641394387],[-76.8343633333333,39.2106166666667],
[-76.834205,39.21054],[-76.8340283333333,39.2105483333333],
[-76.833938122743,39.2106129286176],[-76.8339113352774,39.2106321097435],
[-76.8338933333333,39.210645],[-76.8338216666667,39.2107666666667],
[-76.83377,39.2108516666667],[-76.8337333333333,39.2109116666667],
[-76.8337122666612,39.2109696000596],[-76.8336933333333,39.2110216666667],
[-76.8337276727651,39.2110803760451],[-76.833745,39.21111],
[-76.8338232468397,39.2111109427531],[-76.8338833333333,39.2111116666667],
[-76.83392,39.211055],[-76.8339716666667,39.2109833333333],
[-76.8340783333333,39.2108283333333],[-76.8340766666667,39.210725],
[-76.8339833333333,39.2106566666667],[-76.8339611067922,39.2106613270793],
[-76.8338887881129,39.2106764906686],[-76.83388,39.2106783333333],
[-76.8338083333333,39.2108016666667],[-76.83373,39.2109366666667],
[-76.8337122666612,39.2109696000596],[-76.83366,39.2110666666667],
[-76.8335933333333,39.21119],[-76.8335266666667,39.211375],[-76.83353,39.2116183333333],
[-76.833635,39.2118683333333],[-76.8338283333333,39.212085],
[-76.8340583333333,39.2123116666667],[-76.8342483333333,39.21253],[-76.834345,39.21274],
[-76.8344233333333,39.212935],[-76.8343933333333,39.21316],
[-76.8345383333333,39.2133166666667],[-76.8347266666667,39.213195],
[-76.8345933333333,39.2129983333333],[-76.834455,39.2127816666667],
[-76.8343833333333,39.212615],[-76.834365,39.2125766666667],
[-76.83429,39.2124883333333],[-76.83412,39.21229],[-76.8339066666667,39.2120766666667],
[-76.8337066666667,39.21187],[-76.8336,39.2116516666667],
[-76.8335816666667,39.2114666666667],[-76.8336083333333,39.211325],
[-76.8336516666667,39.2112016666667],[-76.8337066666667,39.21111],
[-76.8337276727651,39.2110803760451],[-76.8337710512136,39.2110192012812],
[-76.8337716666667,39.2110183333333],[-76.8338516666667,39.2109],
[-76.83392,39.2108133333333],[-76.83396,39.2107166666667],
[-76.8339611067922,39.2106613270793],[-76.8339616666667,39.2106333333333],
[-76.833938122743,39.2106129286176],[-76.83389633091,39.2105767090203],
[-76.8338866666667,39.2105683333333],[-76.833715,39.2105016666667],
[-76.833595,39.2104533333333],[-76.83358,39.21045],[-76.833405,39.2103716666667],
[-76.83337,39.210365],[-76.8332116666667,39.2103166666667],[-76.8330966666667,39.21027],
[-76.83299,39.2102233333333],[-76.83286,39.2101766666667],
[-76.8327283333333,39.2101333333333],[-76.8325683333333,39.2100616666667],
[-76.832535,39.2100016666667],[-76.8325183333333,39.2098966666667],
[-76.8325066666667,39.2097333333333],[-76.8324919958592,39.209720248584],
[-76.8323833333333,39.2096233333333],[-76.8321633333333,39.2095333333333],
[-76.8320825997553,39.20948763515],[-76.8319866666667,39.2094333333333],
[-76.8319816666667,39.2092766666667],[-76.83207,39.2091466666667],[-76.832225,39.20905],
[-76.8323483333333,39.2091416666667],[-76.8322416666667,39.2093283333333],
[-76.8321066666667,39.209475],[-76.8320825997553,39.20948763515],
[-76.8319733333333,39.209545],[-76.831862668414,39.20954057341],
[-76.8318483333334,39.20954],[-76.8318415539569,39.2095171966764],
[-76.8318116666667,39.2094166666667],[-76.8318683333333,39.2093033333333],
[-76.8319233333333,39.209195],[-76.8318483333334,39.2091033333333],
[-76.8317466666667,39.2090916666667],[-76.8317216666667,39.209135],
[-76.8317866666667,39.2093583333333],[-76.83182,39.2094933333333],
[-76.8318415539569,39.2095171966764],[-76.831862668414,39.20954057341],
[-76.8319133333333,39.2095966666667],[-76.8318683333333,39.2097],
[-76.8318416666667,39.2097383333333],[-76.8318116666667,39.2098966666667],
[-76.8319366666667,39.2099516666667],[-76.832085,39.21],[-76.83213,39.21008],
[-76.8322416666667,39.2101083333333],[-76.832365,39.2100483333333],
[-76.8324283333333,39.20996],[-76.832475,39.209885],[-76.83249,39.20984],
[-76.8324919958592,39.209720248584],[-76.8324924676826,39.2096919391536],
[-76.8324933333333,39.20964],[-76.8325983333333,39.2094983333333],
[-76.8326833333333,39.2093466666667],[-76.83268,39.2091916666667],
[-76.8324833333333,39.2091266666667],[-76.8323283333333,39.2092133333333],
[-76.83233,39.209355],[-76.8323516666667,39.209475],
[-76.8323933333333,39.2096216666667],[-76.8324924676826,39.2096919391536],
[-76.832525,39.209715],[-76.8326783333333,39.2096816666667],
[-76.8327537674778,39.2096258661087],[-76.8328,39.2095916666667],
[-76.8328766666667,39.2095216666667],[-76.8329,39.20949],
[-76.8328744528093,39.2094841310634],[-76.8327766666667,39.2094616666667],
[-76.8327466666667,39.2095066666667],[-76.832685,39.209635],
[-76.83268,39.2096466666667]]]
ok found the answer, will put it here in case some one else has the same issue.
the trick is to do nested replace instead separate ones. just change this line
select * from(
(select replace(substring(geo,1),"[[[", "[[") as ngeo union
DISTINCT
(select replace
(substring(geo,1),"]]]", "]]")) union DISTINCT select replace
(substring(geo,1),"]],[[" ,"], ["))
with
select replace(replace(replace(substring(geo,1),"[[[", "[["),"]]]",
"]]"),"]],[[" ,"],[" ) as ngeo

Oracle Parse NCLOB data to Output or New Table

I have an Oracle 11.2.0.4.0 table named LOOKUPTABLE with 3 fields
LOOKUPTABLEID NUMBER(12)
LOOKUPTABLENM NVARCHAR2(255)
LOOKUPTABLECONTENT NCLOB
The data in the NCLOB field is highly validated on insert so I'm certain the data always is a comma separated string with a CRLF on the end so reads exactly like a simple CSV file. Example ([CRLF] is representation of an actual CRLF, not text)
WITH lookuptable AS (
SELECT
1 AS "LOOKUPTABLEID",
'CODES.TBL' AS "LOOKUPTABLENM",
TO_NCLOB('851,ALL HOURS WORKED GLASS,G,0,,,,,,'||chr(10)||chr(13)||
'935,ALL OT AND HW HRS,G,0,,,,,,'||chr(10)||chr(13)||
'934,ALL PAID TIME,G,0,,,,,,'||chr(10)||chr(13)) AS "LOOKUPTABLECONTENT"
FROM dual
)
SELECT lookuptablecontent FROM lookuptable WHERE lookuptablenm='CODES.TBL';
"851,ALL HOURS WORKED GLASS,G,0,,,,,,[CRLF]935,ALL OT AND HW HRS,G,0,,,,,,[CRLF]934,ALL PAID TIME,G,0,,,,,,[CRLF]"
I essentially want to have a query that can output 1 row for each line in the CLOB. I'm using an application that will read this SQL and write it to a text file for me but it cannot handle CLOB data types and I don't have the option to write directly to file from SQL itself. I have to have a query that can produce this result and allow my app to write the file. I do have the ability to create/write my own tables so a procedure that would read the CLOB into a new table and then I would select from that table in my application would be acceptable if that's better, its just over my head right now. Desired output below, thanks in advance for any help :)
1. 851,ALL HOURS WORKED GLASS,G,0,,,,,,
2. 935,ALL OT AND HW HRS,G,0,,,,,,
3. 934,ALL PAID TIME,G,0,,,,,,
This is a specific case of a general question "how to split a string", and I link this question a lot for more details on that. In this case, instead of a comma, the delimiter that you want to split on is CRLF, or chr(10)||chr(13).
Here's a simple solution with regexp_substr. It's not the fastest solution, but it works fine in simple scenarios. If you need better performance, see the version in the link above with a recursive CTE and no regexp.
WITH lookuptable AS (
SELECT
1 AS LOOKUPTABLEID,
'CODES.TBL' AS LOOKUPTABLENM,
TO_NCLOB('851,ALL HOURS WORKED GLASS,G,0,,,,,,'||chr(10)||chr(13)||
'935,ALL OT AND HW HRS,G,0,,,,,,'||chr(10)||chr(13)||
'934,ALL PAID TIME,G,0,,,,,,'||chr(10)||chr(13)) AS LOOKUPTABLECONTENT
FROM dual
)
SELECT lookuptableid as id, to_char(regexp_substr(lookuptablecontent,'[^('||chr(13)||chr(10)||')]+', 1, level))
FROM lookuptable
WHERE lookuptablenm='CODES.TBL'
connect by level <= regexp_count(lookuptablecontent, '[^('||chr(13)||chr(10)||')]+')
and PRIOR lookuptableid = lookuptableid and PRIOR SYS_GUID() is not null -- needed if more than 1 source row
order by lookuptableid, level
;
Output:
id r
1 851,ALL HOURS WORKED GLASS,G,0,,,,,,
1 935,ALL OT AND HW HRS,G,0,,,,,,
1 934,ALL PAID TIME,G,0,,,,,,
My example data and format using the recursive CTE without regexp from link provided by #kfinity
WITH lookuptable (lookuptableid, lookuptablenm, lookuptablecontent) AS (
SELECT
1,
'CODES.TBL',
TO_NCLOB('ID,NAME,TYPE,ISMONEYSW,EARNTYPE,EARNCODE,RATESW,NEGATIVESW,OVERRIDEID,DAILYSW'||chr(13)||chr(10)||
'851,ALL HOURS WORKED GLASS,G,0,,,,,,'||chr(13)||chr(10)||
'935,ALL OT AND HW HRS,G,0,,,,,,'||chr(13)||chr(10)||
'934,ALL PAID TIME,G,0,,,,,,'
)
FROM dual
), CTE (lookuptableid, lookuptablenm, lookuptablecontent, startposition, endposition) AS (
SELECT
lookuptableid,
lookuptablenm,
lookuptablecontent,
1,
INSTR(lookuptablecontent, chr(13)||chr(10))
FROM lookuptable
WHERE lookuptablenm = 'CODES.TBL'
UNION ALL
SELECT
lookuptableid,
lookuptablenm,
lookuptablecontent,
endposition + 1,
INSTR(lookuptablecontent, chr(13)||chr(10), endposition+1)
FROM CTE
WHERE endposition > 0
)
SELECT
lookuptableid,
lookuptablenm,
SUBSTR(lookuptablecontent, startposition, DECODE(endposition, 0, LENGTH(lookuptablecontent) + 1, endposition) - startposition) AS lookuptablecontent
FROM CTE
ORDER BY lookuptableid, startposition;

What is the syntax problem here using this subquery inside where clause

SELECT p.pnum, p.pname
FROM professor p, class c
WHERE p.pnum = c.pnum AND c.cnum = CS245 AND (SELECT COUNT(*) FROM (SELECT MAX(m.grade), MAX(m.grade) - MIN(m.grade) AS diff
FROM mark m WHERE m.cnum = c.cnum AND m.term = c.term AND m.section = c.section AND diff <= 20)) = 3
Incorrect syntax near ')'. Expecting AS, FOR_PATH, ID, or QUOTED_ID.
Consider the following example:
SELECT COUNT(1)
FROM SYSCAT.TABLES T
WHERE
(
-- SELECT COUNT(1)
-- FROM
-- (
SELECT COUNT(1)
FROM SYSCAT.COLUMNS C
WHERE C.TABSCHEMA=T.TABSCHEMA AND C.TABNAME=T.TABNAME
-- )
) > 50;
The query above works as is. But the problem is, that if you uncomment the commented out lines, you get the following error message: "T.TABNAME" is an undefined name. and least in Db2 for Linux, Unix and Windows.
You can't push external to the sub-select column references too deeply.
So, your query is incorrect.
It's hard to correct it, until you provide the task description with data sample and the result expected.
I can see a potential syntax errors: It seems that CS245 refers to a value c.cnum may take and not a column name. If that is the case, it should be enclosed in single quotes.

Find Substring - SQL

I need to find a substring that is in a text field that is actually partially xml. I tried converting it to xml and then use the .value method but to no avail.
The element(substring) I am looking for is a method name that looks like this:
AssemblyQualifiedName="IPMGlobal.CRM2011.IPM.CustomWorkflowActivities.ProcessChildRecords,
where the method at the end "ProcessChildRecords" could be another name such as "SendEmail". I know I can use the "CustomWorkflowActivities." and the , (comma) to find the substring (method name) but not sure how to accomplish it. In addition, there may be more that one instance listed of the **"CustomWorkflowActvities.<method>"**
Some Clarifications:
Below is my original query. It returns that first occurrence in each row but no additional. For example I might have in the string '...IPM.CustomWorkflowActivities.ProcessChildRecords...' and
'...IPM.CustomWorkflowActivities.GetworkflowContext...'
The current query only returns Approve Time Process,
ipm_mytimesheetbatch,
ProcessChildRecords
SELECT WF.name WFName,
(
SELECT TOP 1 Name
FROM entity E
WHERE WF.primaryentity = E.ObjectTypeCode
) Entity,
Convert(xml, xaml) Xaml,
SUBSTRING(xaml, Charindex('CustomWorkflowActivities.', xaml) + Len('CustomWorkflowActivities.'), Charindex(', IPMGlobal.CRM2011.IPM.CustomWorkflowActivities, Version=1.0.0.0', xaml) - Charindex('CustomWorkflowActivities.', xaml) - Len('CustomWorkflowActivities.'))
FROM FilteredWorkflow WF
WHERE 1 = 1
AND xaml LIKE '%customworkflowactivities%'
AND statecodename = 'Activated'
AND typename = 'Definition'
ORDER BY NAME
If you are using Oracle you could use REGEXP function:
WITH cte(t) as (
SELECT 'AssemblyQualifiedName="IPMGlobal.CRM2011.IPM.CustomWorkflowActivities.ProcessChildRecords,' FROM dual
)
SELECT t,
regexp_replace(t, '.*CustomWorkflowActivities.(.+)\,.*', '\1') AS r
FROM cte;
DBFiddle Demo
SQL Server:
WITH cte(t) as (
SELECT 'AssemblyQualifiedName="IPMGlobal.CRM2011.IPM.CustomWorkflowActivities.ProcessChildRecords,asfdsa'
)
SELECT t,SUBSTRING(t, s, CHARINDEX(',', t, s)-s)
FROM (SELECT t, PATINDEX( '%CustomWorkflowActivities.%', t) + LEN('CustomWorkflowActivities.') AS s
FROM cte
) sub;
DBFiddle Demo 2

UNION clause in embedded SQL

I'm using ingres 10S SQL, and I'm trying to write the following SQL statement in an embedded SQL C program. It works fine as a standalone SQL script, but compiling the eSQL program gets the error
%% Error in file localtask.sc, Line 498:
E_EQ0244 Syntax error on 'union'.
INSERT INTO nr301_tab2 (authority_id)
SELECT a.authority_id
FROM nrremdets a, nrstatus_hierarchy z
WHERE a.authority_id = z.authority_id
UNION
SELECT a.authority_id
FROM nrsumsamts a, nrsumsdets b
WHERE a.authority_id = b.authority_id;
(line 498 is the UNION line) What's wrong with that UNION clause?
Just a slight tweak of the query and it should work. Try this:
INSERT INTO nr301_tab2 (authority_id)
SELECT authority_id
FROM
(SELECT a.authority_id
FROM nrremdets a, nrstatus_hierarchy z
WHERE a.authority_id = z.authority_id
UNION
SELECT a.authority_id
FROM nrsumsamts a, nrsumsdets b
WHERE a.authority_id = b.authority_id) Result
The idea is to union the result sets, which will create a new result set to be inserted once in the table. By adding the parenthesis we make sure that this happens.