UserID UserName Password
1 abc 123
10 xyz 456
3 mno 254
SELECT MAX(UserId) AS UserId FROM UserLogin
When I run this query it gives me 3 instead of 10
All columns are TEXT datatype
Your query is returning 3
because it is the largest value considering lexicographic order (anything starting with 3
is considered greater than anything starting with 1
, just like something starting with b
is greater than anything starting with a
).
Use the VAL
function to convert the TEXT columns into numeric values:
SELECT MAX(VAL(UserId)) AS UserId FROM UserLogin
If you're concerned about performance, you should make this column numeric, though. Take into account you're calling a function for every row in the table. Also, it won't be using any indexes this column may have.