Med Akram Z
Med Akram Z

Reputation: 170

Why does this search query return nothing?

I have this table under user_name='high'

function_description :

akram is in a date

test

akram is studying

test4

kheith is male

test3

I want a query that returns results of field that have at least an 'akram'

SELECT * 
  FROM functions 
 WHERE 'isEnabled'=1
   AND 'isPrivate'=1
   AND user_name='high'
   AND function_description LIKE '%akram%'

and this returns absolutely nothing!

Why?

Upvotes: 0

Views: 59

Answers (2)

Fosco
Fosco

Reputation: 38526

You are listing the column names as if they are strings. This is why it returns nothing.

Try this:

SELECT * 
FROM functions 
WHERE user_name='high'
AND function_description LIKE '%akram%'

edit: After trying to re-read your question... are isEnabled and isPrivate columns in this table? edit2: updated.. remove those unknown columns.

Upvotes: 1

Jonathan Leffler
Jonathan Leffler

Reputation: 754030

You are comparing strings 'isEnabled' with integer 1, which likely leads to the integer being converted to a string, and the comparison then fails. (The alternative is that the string is converted to an integer 0 and the comparison still fails.)

In MySQL, you use back-quotes, not single quotes, to quote column and table names:

SELECT * 
  FROM `functions` 
 WHERE `isEnabled` = 1
   AND `isPrivate` = 1
   AND `user_name` = 'high'
   AND `function_description` LIKE '%akram%'

In standard SQL, you use double quotes to create a 'delimited identifier'; in Microsoft SQL Server, you use square brackets around the names.

Please show the schema more carefully (column names, sample values, types if need be) next time.

Upvotes: 1

Related Questions