mysql - 选择匹配整数上字符串的起始数字

标签 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

内容:

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/

相关文章:

java - 如何删除表模型以及我的数据库中的多个数据/行

mysql - 我可以使用 auto_increment (mysql) 更新所有主键表吗?

mysql - 对于大量数据,有没有办法加快从 Node.js 向客户端发送数据的速度?

mysql - 如何通过 MYSQL 搜索某些内容然后更改表列中的某些文本

php - 通过单击“添加评论”按钮,它仅适用于第一篇文章。我该如何为该墙上的所有帖子执行此操作

mysql - 无法使用 MySql 连接到 Win Xp 服务器

mysql - SQL LEFT JOIN 与 CASE 表达式

MySQL - 解析数据并将其从表1移动到表2

mysql - 尝试选择所有内容但排除 ID 之间的内容是行不通的

MYSQL - 想要选择一些行,有时该字段不存在,但我想在该字段存在时使用 WHERE