Your achievements

Level 1

0% to

Level 2

Tip /
Sign in

Sign in to Community

to gain points, level up, and earn exciting badges like the new
Bedrock Mission!

Learn more

View all

Sign in to view all badges

SOLVED

Difference between CONTAINS and LIKE clauses in search

askdctm
Level 9
Level 9

Hi All,

CONTAINS(s.[jcr:title],'abc') OR (s.[jcr:title] LIKE 'abc%'))  

The above line is being used in JCR-SQL2 query.

1]What exactly does CONTAINS and LIKE do here.

Any thoughts on this will be helpful.

1 Accepted Solution
GK-AEM
Correct answer by
Level 9
Level 9

Please see below.

  • Below Queries will find any node with a title property which contains the text client any where in the text phrase.

            SELECT * FROM [nt:base] AS s WHERE CONTAINS(s.title, 'client')

           SELECT * FROM [nt:base] AS s WHERE s.title like  '%client%'

  •  Query will find files with ends with the string ".png" extension

            SELECT * FROM [nt:file] WHERE NAME() LIKE '%.png'

  • Query will only find the files starts with the name 'abc'

            SELECT * FROM [nt:file] WHERE NAME() LIKE 'abc%'

Hope this clears difference between LIKE and COONTAINS

View solution in original post

8 Replies
askdctm
Level 9
Level 9

Hi Kishore,

I did go through that, but was not very clear.

Any example/thought on it would be helpful.

Lokesh_Shivalingaiah
Community Advisor
Community Advisor

one basic difference between these is 'Contains' will search for the given string anywhere in the content, however 'LIKE' will search for the given expression, ex: abc% where it searches for the string abc to be the starting of the content and not in the middle.

GK-AEM
Correct answer by
Level 9
Level 9

Please see below.

  • Below Queries will find any node with a title property which contains the text client any where in the text phrase.

            SELECT * FROM [nt:base] AS s WHERE CONTAINS(s.title, 'client')

           SELECT * FROM [nt:base] AS s WHERE s.title like  '%client%'

  •  Query will find files with ends with the string ".png" extension

            SELECT * FROM [nt:file] WHERE NAME() LIKE '%.png'

  • Query will only find the files starts with the name 'abc'

            SELECT * FROM [nt:file] WHERE NAME() LIKE 'abc%'

Hope this clears difference between LIKE and COONTAINS

View solution in original post

askdctm
Level 9
Level 9

Hi Kishore,

Thanks a lot for your reply.

So, as per my understanding, from the above post , the below two queries will perform the same functionality of finding nodes with title property, which contains "client" anywhere in the text phrase?

SELECT * FROM [nt:base] AS s WHERE CONTAINS(s.title, 'client')

SELECT * FROM [nt:base] AS s WHERE s.title like  '%client%'

kautuk_sahni
Community Manager
Community Manager

Adding to answer what lokesh has mentioned, so that in future this answer would act as better solution,

one basic difference between these is 'Contains' will search for the given string anywhere in the content, however 'LIKE' will search for the given expression, ex: abc% where it searches for the string abc to be the starting of the content and not in the middle.

 

//Expressions could used in Like, whereas contains would only search exact string starting [not end or in between].

askdctm
Level 9
Level 9

Hi Kautuk/Lokesh/Kishore,

Thank you for all your help here.