在直接编写SQL的时候,对于不同数据类型的,需要有不同的写法。
例如,在表T1中,字段a为数值类型,字段b为字符串类型,则以字段a和b进行过滤时,SQL应该写为:
SELECT * FROM T1 WHERE a=数值型条件值 AND b='字符串型条件值'
此外,对于一些特定的数据类型,不同数据库会有不同的写法。
例如,在表T2中,字段c的数据类型为日期,则以字段c进行过滤时,不同数据库应该有不同的写法:
MySQL: SELECT * FROM T2 WHERE c='日期型字符串条件值'
Oracle: SELECT * FROM T2 WHERE c=TO_DATE('日期型字符串条件值', 'YYYY-MM-DD')
而使用带参数的SQL来定义数据集时,编写SQL时,就不需要考虑字段的类型了,因为底层会负责做相应的翻译,而SQL的写法变为:
SELECT * FROM T1 WHERE a=? AND b=?
SELECT * FROM T2 WHERE c=?
与参数相比较,宏只是单纯进行字符串的替换。