Extract under strings in a string with delimiters
I have a column that stores codes of different products in a series and is delimited by an slash (\). The length of the column is a VARCHAR2 (100). These are the products, the customer has purchased and have been stored in a table.Still, the chain ends with the slash and is also used to separate products.
I would like to highlight only those customers who have purchased products that are internal. Thus, according to the data below, I want to pick up only customers 1001 and 1003 even if one of the product Codes is internal
Oracle 9i Version. I won't be able to use it to build WITH.
Scripts and Insert of statements:
CREATE TABLE CUSTOMER(
"CUSTOMER_ID" VARCHAR2(4 BYTE),
"LAST_NAME" VARCHAR2(20 BYTE),
"FIRST_NAME" VARCHAR2(20 BYTE));
Insert into CUSTOMER (CUSTOMER_ID,LAST_NAME,FIRST_NAME) values ('1001','Taylor','David');
Insert into CUSTOMER (CUSTOMER_ID,LAST_NAME,FIRST_NAME) values ('1002','Brown','Cynthia');
Insert into CUSTOMER (CUSTOMER_ID,LAST_NAME,FIRST_NAME) values ('1003','Green','Robert');
Insert into CUSTOMER (CUSTOMER_ID,LAST_NAME,FIRST_NAME) values ('1004','McManus','Donna');
CREATE TABLE PRODUCT (
"PRODUCT_ID" VARCHAR2(10 BYTE),
"PRODUCT_NAME" VARCHAR2(30 BYTE),
"INTERNAL_FLAG" VARCHAR2(1 BYTE));
Insert into PRODUCT (PRODUCT_ID,PRODUCT_NAME,INTERNAL_FLAG) values ('PR01','Product 01','Y');
Insert into PRODUCT (PRODUCT_ID,PRODUCT_NAME,INTERNAL_FLAG) values ('PR02','Product 02','Y');
Insert into PRODUCT (PRODUCT_ID,PRODUCT_NAME,INTERNAL_FLAG) values ('PR03','Product 03','N');
Insert into PRODUCT (PRODUCT_ID,PRODUCT_NAME,INTERNAL_FLAG) values ('PR04','Product 04','N');
Insert into PRODUCT (PRODUCT_ID,PRODUCT_NAME,INTERNAL_FLAG) values ('PR05','Product 05','N');
Insert into PRODUCT (PRODUCT_ID,PRODUCT_NAME,INTERNAL_FLAG) values ('PR06','Product 06','N');
Insert into PRODUCT (PRODUCT_ID,PRODUCT_NAME,INTERNAL_FLAG) values ('PR07','Product 07','Y');
Insert into PRODUCT (PRODUCT_ID,PRODUCT_NAME,INTERNAL_FLAG) values ('PR08','Product 08','N');
CREATE TABLE CUSTOMER_PRODUCT_SUMMARY(
"CUSTOMER_ID" VARCHAR2(4 BYTE),
"PRODUCT_STRING" VARCHAR2(100 BYTE));
Insert into CUSTOMER_PRODUCT_SUMMARY (CUSTOMER_ID,PRODUCT_STRING) values ('1001','PR01\PR02\PR03\');
Insert into CUSTOMER_PRODUCT_SUMMARY (CUSTOMER_ID,PRODUCT_STRING) values ('1002','PR04\PR05\');
Insert into CUSTOMER_PRODUCT_SUMMARY (CUSTOMER_ID,PRODUCT_STRING) values ('1003','PR06\PR07\');
Insert into CUSTOMER_PRODUCT_SUMMARY (CUSTOMER_ID,PRODUCT_STRING) values ('1004','PR08\');
Thank you!
GVR wrote:
A wayselect distinct c.customer_id from CUSTOMER c,PRODUCT p, CUSTOMER_PRODUCT_SUMMARY s where c.customer_id=s.customer_id and s.product_string like '%'||p.PRODUCT_ID||'\%' and INTERNAL_FLAG='Y';
By chance, it happens to work with the given sample data, but you must watch out for the problem of the 'mother's in chemotherapy
Say that add us to the sample data:
Insert into PRODUCT (PRODUCT_ID,PRODUCT_NAME,INTERNAL_FLAG) values ('R04','NOT Product 04','Y');
The query above has now customer_id = "1002", because his product_sting 'PRO4\PR05', which happens to include "R04\", even if that customer never bought this product.
You need ' \'s at the beginning of the strings, just as you need it at the end of the strings:
select distinct c.customer_id from CUSTOMER c,PRODUCT p, CUSTOMER_PRODUCT_SUMMARY s
where c.customer_id=s.customer_id
and '\' || s.product_string like '%\'||p.PRODUCT_ID||'\%' -- ***** CHANGED *****
and INTERNAL_FLAG='Y';
Tags: Database
Similar Questions
-
Analyzes the string and extract the string delimiter
Hello
Basic questions. Is this possible with the scan of regular expression of the string to extract the string that are in the specified delimiters. Here is an example:
Name of the \\Name of the folder 1\Name to the folder 2\Name to the folder 3\File
Chain analysis can produce the following by specifying the regular expression on the right:
1 folder name
Name of the folder 2
Name of the folder 3
File name
I tried \\\%s\\%s\\%s\\%s but the %s stops on the first white space.
Thank you
Michel
RavensFan suggested the service appropriate for your condition, but you can also use an alternative, which is "spreadsheet of array of strings.
-
Problem with regexp_substr if the string with null values between commas.
Hi all
My version of DB is 10.1.0.5.0
I want to extract the string values using query below, but I am unable to provide the correct result.
My required result as below.WITH t AS ( select '123,1,3,22' col FROM DUAL UNION ALL SELECT '123,,2,1' FROM DUAL UNION ALL SELECT '5,1,2,,' FROM DUAL ) SELECT regexp_substr(t.col,'[^,]*',1,1) ,regexp_substr(t.col,'[^,]*',1,2) ,regexp_substr(t.col,'[^,]*',1,3) ,regexp_substr(t.col,'[^,]*',1,4) FROM DUAL,t ;
Please help me to get the required result by using regular expressions.123 1 3 22 123 2 1 5 1 2
Thanks, RamHello
In Oracle 10, you can do so by combining REGEXP_SUBSTR with something else like RTRIM:
SELECT RTRIM (REGEXP_SUBSTR (col, '[^,]*(,|$)', 1, 1), ',') AS part_1 , RTRIM (REGEXP_SUBSTR (col, '[^,]*(,|$)', 1, 2), ',') AS part_2 , RTRIM (REGEXP_SUBSTR (col, '[^,]*(,|$)', 1, 3), ',') AS part_3 , RTRIM (REGEXP_SUBSTR (col, '[^,]*(,|$)', 1, 4), ',') AS part_4 FROM t ;
Starting Oracle 11 REGEXP_SUBSTR alone can do.
But look at the first response; regular expressions will be probably less effective than less powerful features, especially when all channels have the same number of separators.
Published by: Frank Kulash on 29 December 2012 08:36
-
Extract the string from the chain - separator = ' | '?
Hi people!
I want to know how to extract the a string with delimiter = XE field ' |'.
For example:
String = "field1 |" Field2 |... | fieldX |... | filedn | »
I want to extract fieldX.
Thanks for your help, regards.Use the functions like this substr and instr
substr(string, instr( string,'|', 1, xth_occurrence)+1, instr( string,'|', 1,xth_occurrence+1) - instr(string,'|', 1, xth_occurrence))
Luca
Please, mark the reply as useful/correct if it is
Published by: Luka on January 26, 2010 10:42
Published by: Luka on January 26, 2010 10:42
-
How to convert the string with numbers in the table of Boolean 2D
Hello
I have input a string with comma separated numbers 1,192 (starting at 1).
This string must be converted to a table 2D-boolean. Each number that appears should be true, not true rest.
The 2D table consists of 4 times of 0.47 Boolean values.
1.48--> [0.47] numbers [0]
49.96--> [0.47] numbers [1]
Numbers 97.144--> [0.47] [2]
145.192--> [0.47] numbers [3]If a '1, 49, 97 145' input string put all [0] [0.3] true.
How can it be easy/fast resolved?
Thanks for help
Break the string of numbers in a table of numbers. (Spreasheet String to Array).
In a loop For, index with each issue of this table. Use in the range and Coerce to see if it is in the range of numbers. (You can put this in a loop For as auto good indexing through the ranges). If it's in the range, then use subset replace table to activate the corresponding item in a real. If this is not the case, do nothing. Maintain the table of Boolean in a shift register.
Repeat this step for each number in your table.
(What is a class assignment?)
-
How to convert the string with numbers in U8 with ascii
Hello
I have a string with only numbers 0. 9 paper.
Now, I want to convert to table-U8.
He works here, but now the problem: How can I change each character to its ascii value?
Example:
entry: 123 (string)
output: x 31, x 32, x 33 (U8-array)
Thanks for the help
It's very easy
String to Byte Array Function
Have the Palette: string/array/path Conversion functionsConverts a string to an array of unsigned bytes. Each byte in the array has the ASCII value of the character corresponding to the string.
-
Number of strings with decimal
Hello community,
I would like to convert numbers to the string with decimal separators. So if the number is 52351 then the string I need is 52 351
Another example 18653284.9653235 becomes 18,653,284.9653235
What would be the best way to do it?
Thank you!
Read this thread: https://forums.ni.com/t5/LabVIEW/comma-separator-for-large-numbers-how-to/m-p/2123090/highlight/true...
Not the first person to wish for this idea.
-
How to concatenate the string with a digital command?
Hello
How to concatenate the string with a digital command?
Thank you.
I think I forgot to add the semicolon, what you can do is, drag the CONCATENATE function and add semicolon.
-
How the filter string with don't cares...?
Hello
I need help on getting filter string with cares. Attached is a VI for ref.
If anyone has chain, analysis of expertise; I need your help.
Thank you
SB_LV
Another fun one
-
Initialization of a string with a UTF-8 character
It doesn't seem like it should be that hard, but I am trying to initialize a string with a UTF-8 character (specifically a degree after a few numbers symbol).
I tried:
Dim myString As String = new String ("\uc2b0", "UTF - 8");
as well as a few permutations but did not have luck...
Java strings are in Unicode, UTF - 8 is a way to represent these characters in a stream of bytes.
Take a look at the following code, it might be useful: I suggest to put point break in the line add and take a look at the content of the two strings.
No compiled code, could not work, I hope you get the idea...
Char [] testchars = new char [] {'\u00B0', '\u0020'};
String displayString = "undefined";
Byte [] testBytes = new byte [] {(byte) (byte), 0xC2 0xB0, 0x20};
String displayString2 = "no set2";
try {}
displayString = new String (testchars);
displayString2 = new String(testBytes,"UTF-8");
} catch (Exception e) {}
}
BasicEditField bef = new BasicEditField ("Test2:", displayString + ":" + displayString2);
This.Add (BEF); -
How to concatenate strings with the lines of a text file
HelloI tried concatenate strings with the lines of a text file, but something is wrong with my code and I belive is the agruments I use in the cycle for. If anyone can help me I will appreciate it very much.My code is:[code]@echo offthe value "input=C:\Users\123\Desktop\List.txt".for /f "usebackq tokens = *" % in (' input % ') do)the value 'str1 = C:\some directory\ ".the value ' str2 = %% ~ F '.the value "str3 = .pdf".the value "str4 = str1% str2% str3%.echo.%STR4%) [/ code]and the text file is something like:121122 [code]122233123344124455 [/ code]But I get only one wrong answer and I have to run it like 3 times to get a real result and it is a mistake, the first two are empty spaces and gives the third one as the last line of the text file but repeated n times, where n is the number of lines in the text file.Result:[code] C:\Users\123\Desktop>concatenate.batC:\Users\123\Desktop>concatenate.batC:\Users\123\Desktop>concatenate.batC:\some directory\124455.pdfC:\some directory\124455.pdfC:\some directory\124455.pdfC:\some directory\124455.pdfC:\some directory\124455.pdfC:\Users\123\Desktop>[/code]So if anyone has an idea about what is wrong please let me know.Concerning-Victor-Hi Victor,
This forum is dedicated to the support of the Office of consumer Windows (fonts, colors, personal settings). Since your question is about programming and usually outside the context of most of the customers, I suggest you post your question in the forums as http://msdn.microsoft.com - the Microsoft network to users will be more adapted to help you in your quest. -
How to capture the data of type string with agent script and then compared to an alarm
Hello...
How to capture the string with agent of script data and then create a rule to compare the string data to generate alarm?
Thank you!...
Start here:
-
Extract the string from the string
Hello guys,.
I have a small question. I would like to extract a string to another string. Imagine the following string:
param1 = value1 param2 = value2, param3 = value3, param4 = value4
I would like to be able to extract value2 and value3 to this string. I know that the design of the db is not perfect and should be like this. but it is historical and I have to use this way. Any suggestion?
Thank you
to retrieve param2
Select
substr (s
, instr (s, '=', 1, 2) + 1
, instr (s, ',', 1, 2) - instr (s, '=', 1, 2) - 1
) r
from (select "param1 = value1 param2 = value2, param3 = value3, param4 = value4's double)
or
Select regexp_substr (your_string, "[^,] +' 1, 4") from your_table
for example
Select regexp_substr ("param1 = value1 param2 = value2, param3 = value3, param4 = value4 ',' [^,] +' 1, 4") param2 double
PARAM2
'value2 '.
Post edited by: chris227
Corrected solution substr (sorry was before the first coffee ;-)) -
Search strings / with some applied condition
Hello comrades,.
I am writing an extendscript which is supposed to loop through all of the PGF and find all the strings / with a certain condition applied (say, comment).
The problem is that in the script guide, I couldn't find a function that retrieves the status of character property. I tried to use the function "charAt() (i)" js, but it doesn't seem to work in ARE. No idea how to implement such a function?
Here's the 1st draft of the script.
var doc is app. ActiveDoc;
If doc. {ObjectValid()}
checkCondFMt (doc);
}
else {}
Alert ("no open section");
}
function checkCondFMt (doc) {}
FMP var is doc. MainFlowInDoc.FirstTextFrameInFlow.FirstPgf;
var CondObj is doc. GetNamedObject ("Comment");
While (FMP. {ObjectValid()})
var textItems is bmp. GetText(Constants.FTI_String |) Constants.FTI_LineEnd);
var b = new TextRange();
TR. Beg.obj = tr.end.obj = textItems;
TR. Beg.offset = 0;
for (var i = 0; i < tr.len; i ++) {}
var c = tr.charAt (i);
var PgfProps is doc. GetTextVal c [i], Constants.FO_CondFmt;
Alert (PgfProps.Name);
}
PGF = bmp. NextPgfInFlow;
}
}
Thanks in advance for your comments!
OK, I see the problem now. JavaScript doesn't have a "block scope" for its variables. She carried the function, so your 'i' variable is used in more than a loop. You must use a different variable for the inner loop:
for (var j = 0; j < oCond.length; j += 1) { if (oCond[j].Name == CondObj.Name) { applyCharFmt(textRange, doc); } }
In the code example above, I use 'j' for a counter for the inner loop.
In general, you can avoid problems of this kind to declare all your variables at the top of the function:
function functionName (param1, param2) { var i, j, textlist; // etc. // function code... }
That makes it easier to 'follow' variables and make sure that you do not use one more than once.
-Rick
-
I'm trying to extract the strings and load them into a text-helpplease file
I'm trying to extract the strings and load them into a file text without space between them - see below
p_csa = ISCC M4 DP
where p_csa is a tring to load into a text file
Code:
SELECT SUBSTR (p_csa, 0, 0) INTO v_telco FROM DUAL;
SELECT SUBSTR (p_csa, 1, 4) INTO v_comp FROM DUAL;
SELECT SUBSTR (p_csa, 5.3) INTO v_csa_prefix FROM DUAL;
SELECT SUBSTR (p_csa, 8, 4) INTO v_csa_type FROM DUAL;
fileidinvoice: = UTL_FILE. FOPEN (c_data_location, filenameinvoice, 'W');
fileidlog: = UTL_FILE. FOPEN (c_data_location, filenamelog, 'W');
UTL_FILE. PUT_LINE)
fileidinvoice, v_telco | » '|| v_comp | "|" | v_csa_prefix: "| v_csa_type);
-the content of the file-
ISCC M4 DP
=====================
I want to remove the space between the chain above for the content of the file should look like this:
-the content of the file-
GCSIM4DPHello
976253 wrote:
I'm trying to extract the strings and load them into a file text without space between them - see belowp_csa = ISCC M4 DP
where p_csa is a tring to load into a text file
Code:
SELECT SUBSTR (p_csa, 0, 0) INTO v_telco FROM DUAL;
Is it always NULL?
SELECT SUBSTR (p_csa, 1, 4) INTO v_comp FROM DUAL;
You don't need the double table much in PL/SQL. You can simply say
v_comp := SUBSTR (p_csa, 1, 4);
Almost all integrated single-row functions work in PL/SQL. (NVL2 is the only one I know who does not work in PL/SQL).
SELECT SUBSTR (p_csa, 5.3) INTO v_csa_prefix FROM DUAL;
SELECT SUBSTR (p_csa, 8, 4) INTO v_csa_type FROM DUAL;fileidinvoice: = UTL_FILE. FOPEN (c_data_location, filenameinvoice, 'W');
fileidlog: = UTL_FILE. FOPEN (c_data_location, filenamelog, 'W');UTL_FILE. PUT_LINE)
fileidinvoice, v_telco | » '|| v_comp | "|" | v_csa_prefix: "| v_csa_type);What are you trying to do here? For example, what you're trying to put between c_comp and v_csa_prefix?
-the content of the file-
ISCC M4 DP
=====================
I want to remove the space between the chain above for the content of the file should look like this:-the content of the file-
GCSIM4DP
If you don't want space, then only concatenate all the spaces in the string before you write it and REPLACE allows you to delete all the spaces that have been copied from p_csa. For example:
UTL_FILE.PUT_LINE ( fileidinvoice , REPLACE ( v_telco || v_comp || v_csa_prefix || v_csa_type , ' ' ) );
I guess you need the v_comp of separate variables, the v_csa_prefix and the v_csa_type for something.
I hope that answers your question.
If this isn't the case, after a complete script that people can run to recreate the problem and test their ideas. Display the results you want (in other words, the contents of the file created).
Always say what version of Oracle you are using (for example, 11.2.0.3.0).
See the FAQ forum {message identifier: = 9360002}
Maybe you are looking for
-
Re: Lack of drivers for my card Satellite C55-A-1RM
I bought a C55-A-1 Satellite, and I got it by installing Windows 7.I had updated the bios first with the ios 1.30 version.These are the drivers and devices that are missing. EthernetPCI\VEN_10EC & DEV_8136 & SUBSYS_FF1E1179 & REV_07 PCI\VEN_10EC & DE
-
Dock on El Captain slow coming upward after the reboot
Recently, the dock on my MBP seems to take a long time to appear after a restart of my MBP, El Capitan. The parameter should not hide, and he ends by appears and remains. Is it possible to speed it up? On my iMac it happens instantly.
-
ProBoob s 4540: unknown device in Device Manager
I reloaded the OS on a SSD and thought I downloaded all the drivers from hp.com devices but I must have missed one. In Device Manager, there is an entry named other devices - unknown device. I clicked it to get the properties, but there is no useful
-
does anyone know how to locate the Windows Defender feature in Control Panel mines seemed to disappear and when I did a scan of my results showed that i had disabled it how this feature, I know that this probably isn't important but I just wanted to
-
How to transfer files and programs out of my old computer to my new HP laptop?
Y at - it an easier way to transfer my software to my new laptop windows 7 HP... rather than having to re - install the software? Thank you! Mike Butler