Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Join us in Bucharest on Sept 18th for Qlik's AI Reality Tour! Register Now
cancel
Showing results for 
Search instead for 
Did you mean: 
SumitSingh
Partner - Contributor III
Partner - Contributor III

Extract substring components from a parent string field

Hi,

I have a below requirement. 

I want to seprate molecule list and its corresponding Int-Strength and seperator is  '!' and '+'

Molecule List Int-Product NFC123 NFC12 Int-Strength
ABC!CDE ABC ABC CDE-CTD TABS ABC COATED TABLET 12.5MG+150MG
ABC!CDE ABC ABC CDE-CTD TABS ABC COATED TABLET 12.5MG+300MG
ABC!CDE ABC ABC CDE-CTD TABS ABC COATED TABLET 25MG+300MG

 

tried using Subfiled function but its doesn't work

Expected output :

Molecule List New Molecule List Int-Product NFC123 NFC12 Int-Strength New Int-Strength
ABC!CDE ABC ABC ABC CDE-CTD TABS ABC COATED TABLET 12.5MG+150MG 12.5MG 
ABC!CDE CDE ABC ABC CDE-CTD TABS ABC COATED TABLET 12.5MG+150MG 150MG
ABC!CDE ABC ABC ABC CDE-CTD TABS ABC COATED TABLET 12.5MG+300MG 12.5MG 
ABC!CDE CDE ABC ABC CDE-CTD TABS ABC COATED TABLET 12.5MG+300MG 300MG
ABC!CDE ABC ABC ABC CDE-CTD TABS ABC COATED TABLET 25MG+300MG 25MG
ABC!CDE CDE ABC ABC CDE-CTD TABS ABC COATED TABLET 25MG+300MG 300MG
Labels (2)
2 Solutions

Accepted Solutions
ggijben
Partner - Creator II
Partner - Creator II

Hi SumitSingh,

Can you try the following script:

 

Data:
LOAD
[Molecule List],
SubField([Molecule List],'!', IterNo()) AS [New Molecule List],
[Int-Product],
NFC123,
NFC12,
[Int-Strength],
SubField([Int-Strength],'+',IterNo()) AS [New Int-Strength]

INLINE [
Molecule List		,Int-Product					,NFC123					,NFC12					,Int-Strength
ABC!CDE				,ABC							,ABC CDE-CTD TABS		,ABC COATED TABLET		,12.5MG+150MG
ABC!CDE				,ABC							,ABC CDE-CTD TABS		,ABC COATED TABLET		,12.5MG+300MG
ABC!CDE				,ABC							,ABC CDE-CTD TABS		,ABC COATED TABLET		,25MG+300MG
]
While IterNo() <= 1+Len(KeepChar([Molecule List],'!'));

 

 

It gives the following output:

Solution.png

View solution in original post

SumitSingh
Partner - Contributor III
Partner - Contributor III
Author

Hi @ggijben ,

Thanks for your solution its worked for the above scenarion but i have one more case where field Int-Strength has single string value and give below output.

Data: 

Molecule List Int-Product NFC123 NFC12 Int-Strength
ABC!CDE ABC ABC CDE-CTD TABS ABC COATED TABLET 12.5MG+150MG
ABC!CDE ABC ABC CDE-CTD TABS ABC COATED TABLET 12.5MG+300MG
ABC!CDE ABC ABC CDE-CTD TABS ABC COATED TABLET 25MG+300MG
EFG!HIJ!KLM CDF ABC ABA-CTD TABS ABA COATED TABLET COMI STR
EFG!HIJ!KLM CDF ABC ABA-CTD TABS ABA COATED TABLET COMI STR
EFG!HIJ!KLM CDF ABC ABA-CTD TABS ABA COATED TABLET

COMI STR

 

 

output I'm getting :

Molecule List New Molecule List Int-Product NFC123 NFC12 Int-Strength New Int-Strength
EFG!HIJ!KLM EFG CDF ABC ABA-CTD TABS ABA COATED TABLET COMI STR COMI STR
EFG!HIJ!KLM HIJ CDF ABC ABA-CTD TABS ABA COATED TABLET COMI STR Null
EFG!HIJ!KLM KLM CDF ABC ABA-CTD TABS ABA COATED TABLET COMI STR Null

 

Expected Output:

Molecule List New Molecule List Int-Product NFC123 NFC12 Int-Strength New Int-Strength
EFG!HIJ!KLM EFG CDF ABC ABA-CTD TABS ABA COATED TABLET COMI STR COMI STR
EFG!HIJ!KLM HIJ CDF ABC ABA-CTD TABS ABA COATED TABLET COMI STR COMI STR
EFG!HIJ!KLM KLM CDF ABC ABA-CTD TABS ABA COATED TABLET COMI STR

COMI STR

 

Can you please help in this case ?

View solution in original post

4 Replies
ggijben
Partner - Creator II
Partner - Creator II

Hi SumitSingh,

Can you try the following script:

 

Data:
LOAD
[Molecule List],
SubField([Molecule List],'!', IterNo()) AS [New Molecule List],
[Int-Product],
NFC123,
NFC12,
[Int-Strength],
SubField([Int-Strength],'+',IterNo()) AS [New Int-Strength]

INLINE [
Molecule List		,Int-Product					,NFC123					,NFC12					,Int-Strength
ABC!CDE				,ABC							,ABC CDE-CTD TABS		,ABC COATED TABLET		,12.5MG+150MG
ABC!CDE				,ABC							,ABC CDE-CTD TABS		,ABC COATED TABLET		,12.5MG+300MG
ABC!CDE				,ABC							,ABC CDE-CTD TABS		,ABC COATED TABLET		,25MG+300MG
]
While IterNo() <= 1+Len(KeepChar([Molecule List],'!'));

 

 

It gives the following output:

Solution.png

SumitSingh
Partner - Contributor III
Partner - Contributor III
Author

Hi @ggijben ,

Thanks for your solution its worked for the above scenarion but i have one more case where field Int-Strength has single string value and give below output.

Data: 

Molecule List Int-Product NFC123 NFC12 Int-Strength
ABC!CDE ABC ABC CDE-CTD TABS ABC COATED TABLET 12.5MG+150MG
ABC!CDE ABC ABC CDE-CTD TABS ABC COATED TABLET 12.5MG+300MG
ABC!CDE ABC ABC CDE-CTD TABS ABC COATED TABLET 25MG+300MG
EFG!HIJ!KLM CDF ABC ABA-CTD TABS ABA COATED TABLET COMI STR
EFG!HIJ!KLM CDF ABC ABA-CTD TABS ABA COATED TABLET COMI STR
EFG!HIJ!KLM CDF ABC ABA-CTD TABS ABA COATED TABLET

COMI STR

 

 

output I'm getting :

Molecule List New Molecule List Int-Product NFC123 NFC12 Int-Strength New Int-Strength
EFG!HIJ!KLM EFG CDF ABC ABA-CTD TABS ABA COATED TABLET COMI STR COMI STR
EFG!HIJ!KLM HIJ CDF ABC ABA-CTD TABS ABA COATED TABLET COMI STR Null
EFG!HIJ!KLM KLM CDF ABC ABA-CTD TABS ABA COATED TABLET COMI STR Null

 

Expected Output:

Molecule List New Molecule List Int-Product NFC123 NFC12 Int-Strength New Int-Strength
EFG!HIJ!KLM EFG CDF ABC ABA-CTD TABS ABA COATED TABLET COMI STR COMI STR
EFG!HIJ!KLM HIJ CDF ABC ABA-CTD TABS ABA COATED TABLET COMI STR COMI STR
EFG!HIJ!KLM KLM CDF ABC ABA-CTD TABS ABA COATED TABLET COMI STR

COMI STR

 

Can you please help in this case ?

ggijben
Partner - Creator II
Partner - Creator II

Hi @SumitSingh , 

Can you try the following script for the  [New Int-Strength] field?

IF( LEN(KeepChar([Int-Strength],'+'))>0, SubField([Int-Strength],'+',IterNo()), [Int-Strength]) AS [New Int-Strength]

 

SumitSingh
Partner - Contributor III
Partner - Contributor III
Author

Thanks it worked