我有这张表:
CREATE TABLE `test` (
`ID` int(11) NOT NULL auto_increment,
`text` varchar(250) collate utf8_unicode_ci default NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
内容:
ID text 1 70-and-some-text 70 blub
Then I make execute this query:
SELECT
*
FROM
test
WHERE
ID = '70-and-some-text'
OR
text = '70-and-some-text'
并得到这两行结果。似乎 MySQL 尝试将尽可能多的数字与 ID 匹配,然后停止。我想我在某个地方读到过,但再也找不到了。
非常感谢回答和提示。提前致谢。友善一点,我是新来的。告诉我,如果我做错了什么。我非常尊重你们。
史蒂芬
==================
感谢 Tomalak,我现在知道问题出在哪里了。有什么处理这个问题的最佳做法吗?我控制“文本”,所以我可以使用 PHP 获取“_70-and-some-text”或字符串。但是 MySQL 中的解决方案将是“最纯粹的”。
最佳答案
这一行
ID = '70-and-some-text'
使 MySQL 将右侧操作数转换为 INT,因为该列是 INT 类型。显然,转换的结果是数字 70。您可以将任何数据类型以字符串的形式传递到 MySQL 查询中,MySQL 会透明地进行必要的类型转换,就像在本例中一样。
关于mysql - 选择匹配整数上字符串的起始数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1685927/