Question: I would like to convert the string values in column b to float. Wondering how should I make it.

```
A    B
1    16-1/4
2    3-1/4
3    21-1/4
4    8-1/4

```

Answer: 
You actually don't need to even use a `CASE` expression here:

```
SELECT *
FROM yourTable
WHERE (some_condition AND a < b) OR (!some_condition AND a > b);

```

That being said, I am surprised that an index cannot be used, because in general your logic can probably be optimized to something like the above, without needing a `CASE` expression.
Your query is not so much clear.But as per assumption,you can do something like this 

SELECT 
CASE WHEN table.col && object = true THEN true ELSE false END as 
INTO #TEMP\_TABLE
FROM table 

Then you can create a CLUSTERED/NON\_CLUSTERED INDEX

CREATE INDEX idx\_col on TABLE #TEMP\_TABLE()

Then you can select the result:

SELECT \* FROM #TEMP\_TABLE WHERE =