Data-mismatch costs

An SQL statement can encounter additional costs when the data type of a column that is used in a condition differs from the definition of the column in the CREATE TABLE statement.

For example, the following query contains a condition that compares a column to a data type value that differs from the table definition:
CREATE TABLE table1 (a integer, );
SELECT * FROM table1 
   WHERE a = '123';

The database server rewrites this query before execution to convert 123 to an integer. The SET EXPLAIN output shows the query in its adjusted format. This data conversion has no noticeable overhead.

The additional costs of a data mismatch are most severe when the query compares a character column with a noncharacter value and the length of the number is not equal to the length of the character column. For example, the following query contains a condition in the WHERE clause that equates a character column to an integer value because of missing quotation marks:
CREATE TABLE table2 (char_col char(3), );
SELECT * FROM table2 
   WHERE char_col = 1;
This query finds all of the following values that are valid for char_col:
' 1'
'001'
'1'
These values are not necessarily clustered together in the index keys. Therefore, the index does not provide a fast and correct way to obtain the data. The SET EXPLAIN output shows a sequential scan for this situation.
Warning: The database server does not use an index when the SQL statement compares a character column with a noncharacter value that is not equal in length to the character column.