我有一个数据库查询,我在其中传递一个字符串以选择 int (id) 或 string (name) 匹配的位置。
例如:
标识(整数) | 名称(varchar) |
---|---|
13 | this_is_a_name |
我正在通过,因为我希望能够在任何一种情况下找到。
问题是,当我执行以下查询时,它应该什么都不返回:
SELECT * FROM items
WHERE
name = '13ff66201c8814f568bd1e5ba304486a'
OR
id = '13ff66201c8814f568bd1e5ba304486a'
ORDER BY id ASC LIMIT 1;
当我不应该返回行时,我在 id 上得到了匹配。有人可以解释为什么会这样吗?鉴于字符串的前两个字符是 13,我知道这是某种字符串到 int 的问题,但它似乎是错误的行为。
我这样做是因为我需要在一个关键点确定我是否正在处理特定数据类型,而该数据类型以前没有通过链接表链接。