Expand my Community achievements bar.

Don’t miss the AEM Skill Exchange in SF on Nov 14—hear from industry leaders, learn best practices, and enhance your AEM strategy with practical tips.
SOLVED

Difference between CONTAINS and LIKE clauses in search

Avatar

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

Avatar

Correct answer by
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

Avatar

Level 9

Hi Kishore,

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

Any example/thought on it would be helpful.

Avatar

Level 10

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.

Avatar

Correct answer by
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

Avatar

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%'

Avatar

Administrator

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].



Kautuk Sahni

Avatar

Level 9

Hi Kautuk/Lokesh/Kishore,

Thank you for all your help here.