I have a query where I am searching against a string:
SELECT county FROM city WHERE UPPER(name) = \'SAN FRANCISCO\';
Now, this works fine,
Oracle supports function-based indexes. Their canonical example:
create index emp_upper_idx on emp(upper(ename));