I\'m trying to search for an exact match of a string in mysql. The string is \'nrew\'. But when I do the queries below, I still get a result:
SELECT UserID F
SELECT UserID FROM sys_users WHERE BINARY UserID='NREW'
One method is to use LIKE BINARY
instead of =
:
SELECT UserID FROM sys_users WHERE UserID LIKE BINARY 'nrew';
The default collation which MySQL uses to make comparisons is case insensitive. You need to specify a case sensitive collation or binary. You can either do this when creating the column, or in the query.
For example:
SELECT UserID FROM sys_users WHERE UserID='NREW' COLLATE latin1_bin
The proper collation depends on your character set. For latin1
, the default, you can use latin1_bin
. For utf8
, utf8_bin
.
You can use keyword Binary,
SELECT UserID FROM sys_users WHERE BINARY UserID='nrew'
refer to here
Give this is try: http://www.devx.com/tips/Tip/13043
Select UserID from sys_users where convert(varbinary, UserID) = convert(varbinary, 'NREW')
Or try COLLATE
http://aspadvice.com/blogs/ssmith/archive/2007/09/30/Case-Sensitive-or-Insensitive-SQL-Query.aspx