首页 > 解决方案 > MySQL如何检查整数是否包含0?

问题描述

我试图从 MySQL 中提取一堆记录,条件是列值是否包含 0。如果我转换为字符串并检查包含 (%0%),则需要更多时间来执行.. 是否有任何简短的方法来检查 Integer柱子?谢谢..

标签: mysqlinteger

解决方案


@SriniK您可以使用POSITION()LOCATE()结合使用CONVERT()将列值转换为字符串,然后查找字符串中是否存在字符串“0”。这两个函数都返回一个大于 0 的正数,表示字符串中子字符串的索引,如果未找到该字符串,则返回 0。

以下是如何创建一个简单的测试表来说明:

CREATE TABLE `testTable` (`id` INTEGER NOT NULL AUTO_INCREMENT, `someNum` INTEGER, PRIMARY KEY(`id`));
                          
INSERT INTO `testTable` (`someNum`)
VALUES
(1),
(10),
(11),
(100),
(111),
(222),
(210);  

这里有两个查询说明POSITION()LOCATE()

SELECT `id`,
    `someNum`,
    POSITION('0' IN CONVERT(`someNum`, CHAR))
FROM `testTable`
WHERE POSITION('0' IN CONVERT(`someNum`, CHAR)) > 0
;
                              
SELECT `id`,
    `someNum`,
    LOCATE('0', CONVERT(`someNum`, CHAR))
FROM `testTable`
WHERE LOCATE('0', CONVERT(`someNum`, CHAR)) > 0
; 
   

我在 dbfiddle 上对此进行了模拟,以便您更好地了解它。

如果这不能满足您的需求,或者您不理解某些内容,请发表评论并提供详细信息,我会尽我所能提供进一步的帮助。祝你好运。


推荐阅读