在Access 2007中被“Like”运算符混淆

时间:2014-01-30 16:48:17

标签: sql ms-access-2007

据我所知,查询中使用的Like运算符旨在对字符串字段执行模式匹配。我很惊讶地发现在Access 2007中它也适用于数字字段。例如,我创建了一个带有名为Data的数字字段的表,其中包含值2012,2013,2110,并意识到以下查询可以正常工作

SELECT myTable.data
FROM myTable
WHERE (((myTable.data) Like "2013"));


SELECT myTable.data
FROM myTable
WHERE (((myTable.data) Like "201*")); 

SELECT myTable.data
FROM myTable
WHERE (((myTable.data) Like 2013)); //this one works even without "

这是Like运算符的工作方式吗?它是否在数字上执行模式匹配?我很困惑。

2 个答案:

答案 0 :(得分:0)

尝试这样

SELECT myTable.data
FROM myTable
WHERE (((myTable.data) Like '201#'));

# Allows you to match on a single numeric digit
* allows you to match any string of any length (including 0 length)
? allows you to match on a single character

MS-Access Like Operator

答案 1 :(得分:0)

这里发生的是“字符串和数字数据类型之间的隐式转换”,以便LIKE运算符能够完成其工作。

许多数据库系统为SUBSTR或CONCAT等其他运营商实现了这一点。