
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Query in QlikView script similar to SQL's "like" function.......
Hi.
I have a couple of questions :
(1) is there a function in QlikView which is similar to SQL's "like" function.
For example : I am trying to filter-out valid emails from the "Email" field in my database.
In SQL, it would be as easy as saying : "Select * from my_customers where email like '%@%';
(This makes sure that the email contains the symbol : @ )
Not surprisingly, this does not work in QlikView's script.
How can I accomplish the same thing here?
(2) the second part of my problem is to create a separate column in QlikView, which would contain boolean values "TRUE" or "FALSE", depending on whether or not the individual has a valid email.
For example : if the script is loaded, and an individual has a valid email, the string "TRUE" will be input into this separate field.
If the email is invalid (for example, does not contain the symbol '@'), then the value "FALSE" will be assigned to this separate field
Thanks
- « Previous Replies
-
- 1
- 2
- Next Replies »
Accepted Solutions

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
Create New field
try like
if(wildmatch(email,'*@*'),'True','False') as Valid_Mail_flag
Use Valid_Mail_flag in front end to get all valid / Invalid mail id.
Regards
Please appreciate our Qlik community members by giving Kudos for sharing their time for your query. If your query is answered, please mark the topic as resolved 🙂


- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
You could use wildmatch() for this.
- Marcus

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
u can go with either,
match()
mixmatch()
if u have wild chart's u can go with
wildmatch() funtion.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
HI,
Hope this helps.
Have a look at attached documents
Directory;
LOAD Email,
if(WildMatch(Email,'*@*'),'True','False') as Flag
FROM
Mail.xlsx
(ooxml, embedded labels, table is Sheet1);
//where WildMatch(Email,'*@*');
Regards
ASHFAQ

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
wildmatch() I think is best.


- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Stephen ,
you can try this as transformation
if(Index(Email,'@')=0 or Isnull(Email),0,Email) as Email
(or)
put where clause to filter out data like below
where index(Email,'@') <> 0
Cheers,
Ganesh.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
You can use the LIKE both in a WHERE part of a LOAD statement and also use it in other contexts as a comparison operator. But the QlikView LIKE use * as a wildcard equivalent to a % in SQL.
It is classified as a string operator and it is hard to find in the QlikView Help function oddly enough:
________________________________________________________________________________________
String Operators
There are two string operators. One uses the string values of the operands and return a string as result. The other one compares the operands and returns a boolean value to indicate match.
& | String concatenation. The operation returns a text string, that consists of the two operand strings, one after another. |
Example: 'abc' & 'xyz' returns 'abcxyz' |
like | String comparison with wildcard characters. The operation returns a boolean true (-1) if the string before the operator is matched by the string after the operator. The second string may contain the wildcard characters * (any number of arbitrary characters) or ? (one arbitrary character). |
Examples: 'abc' like 'a*' returns true (-1)'abcd' like 'a?c*' returns true (-1) 'abc' like 'a??bc' returns false (0) |
LOAD
*
WHERE
email Like '*@*';
SQL
SELECT
*
FROM
XYZ;
OR
LOAD
*,
email Like '*@*' AS IsEmail
.....;

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thank you all for your very helpful replies.
I used the (*) symbol, and it worked great!
But, I was unable to assign the Boolean values of "True" or "False" to separate those people who have valid emails (containing @), and those who don't.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thanks for your reply, Ashfaq
I am loading data from a database.
I need to combine this query :
LOAD (email like '*@*') AS Person_Has_Email (for example)
with this query :
IF EMAIL LIKE '*@*'...............Person_Has_Email = "True"................else Person_Has_Email = "False"
I have resolved the first part; but, I don't want to create separate fields for those who have valid emails, and those who don't. I want to create one field, and assign either TRUE or FALSE..............based on the query for valid emails.
Thanks

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
Create New field
try like
if(wildmatch(email,'*@*'),'True','False') as Valid_Mail_flag
Use Valid_Mail_flag in front end to get all valid / Invalid mail id.
Regards
Please appreciate our Qlik community members by giving Kudos for sharing their time for your query. If your query is answered, please mark the topic as resolved 🙂

- « Previous Replies
-
- 1
- 2
- Next Replies »