选择匹配整数上字符串的开头数

Ste*_*zel 2 mysql

我有这张桌子:

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
Run Code Online (Sandbox Code Playgroud)

内容:

ID     text  
1      70-and-some-text  
70     blub

然后我执行这个查询:

SELECT
    *
FROM
    test
WHERE
    ID = '70-and-some-text'
OR
    text = '70-and-some-text'
Run Code Online (Sandbox Code Playgroud)

并获得两行.似乎MySQL试图匹配ID的数量,然后停止.我想我在某个地方看过,但再也找不到了.

答案和提示非常感谢.提前致谢.善待,我是新人.告诉我,如果我做错了什么.我非常尊重你们.

斯特芬

==================

感谢Tomalak,我现在知道问题的来源.处理这个问题的最佳做法是什么?我控制'文本',所以我可以使用PHP来获取'_70-and-some-text'或字符串.但MySQL中的解决方案将是"最纯粹的".

Tom*_*lak 7

这条线

ID = '70-and-some-text'
Run Code Online (Sandbox Code Playgroud)

使MySQL将右侧操作数转换为INT,因为该列的类型为INT.转换显然会导致数字70.您可以将任何数据类型以字符串的形式传递给MySQL查询,MySQL可以透明地进行必要的类型转换,就像在这种情况下一样.