MYSQL截断了不正确的整数值错误

MYSQL截断了不正确的整数值错误,mysql,Mysql,我正在运行一个查询,得到mysql错误1292:“截断的不正确整数值” 这是一个警告,我的选择很好,但我仍然希望清除警告 我可以确认,每当函数找到链接到对象的标记时,都会出现警告。如果未找到标记,则不会出现警告。因此,如果1000个对象中有50个具有标记,我将得到50个警告,如下所示: Truncated incorrect INTEGER value: '1|Blondes' 使用的数据库功能是: DELIMITER $$ DROP FUNCTION IF EXISTS `fnObject

我正在运行一个查询,得到mysql错误1292:“截断的不正确整数值” 这是一个警告,我的选择很好,但我仍然希望清除警告

我可以确认,每当函数找到链接到对象的标记时,都会出现警告。如果未找到标记,则不会出现警告。因此,如果1000个对象中有50个具有标记,我将得到50个警告,如下所示:

Truncated incorrect INTEGER value: '1|Blondes'
使用的数据库功能是:

DELIMITER $$

DROP FUNCTION IF EXISTS `fnObjectTagGetObjectTags` $$
CREATE DEFINER=`root`@`%` FUNCTION `fnObjectTagGetObjectTags`(_objectType int, _objectId bigint) RETURNS varchar(2048) CHARSET utf8
BEGIN

  DECLARE _outObjectTags VARCHAR(2048);

  SET _outObjectTags =
    (
      SELECT (CAST(GROUP_CONCAT(CONCAT(tagId, '|', tagName) separator '~') AS CHAR(10000) CHARACTER SET utf8)) AS objectTagList
      FROM
      (

      SELECT tagId, tagName
        FROM objectTag
        INNER JOIN tag
          ON tagId = objectTagTagId
        WHERE objectTagObjectType = _objectType
          AND objectTagObjectId = _objectId
          AND objectTagIsDisabled = 0
          AND objectTagIsActive = 1
          AND tagIsDisabled = 0
          AND tagIsActive = 1
      ) as subQuery
    );

  RETURN _outObjectTags;

END $$

DELIMITER ;
调用的查询很简单:

SELECT fnObjectTagGetObjectTags(3, album.albumId)
FROM album
WHERE fnObjectTagGetObjectTags(3, album.albumId) IS NOT NULL
AND albumIsDisabled = 0
AND albumIsActive = 1
我就是不明白它为什么要这么做。有人看到什么奇怪的吗? 我正在跑5.5.13
谢谢

请在连接之前尝试将tagId显式转换为字符,因为您可能会混合使用二进制和非二进制字符串。像


SELECT(CAST(GROUP_CONCAT(CONCAT(CAST(tagId作为CHAR),“|”,标记名)分隔符“~”)作为CHAR(10000)字符集utf8))

如果
tagId
tag.tagId
,我假设)是整数,那么
objecttagid
也是整数吗?反之亦然。在WHERE子句(函数中)中比较的其他值对也是如此。@Andriy M:是的,WHERE子句中使用的所有列都是相同的类型。好的,所以添加强制转换不起作用。但是经过一些修改之后,结果表明调用此函数的查询需要一个cast,即
cast(fnObjectTagGetObjectTags(2,profile.profileId)作为CHAR)作为objectTags
谢谢您给我发送了正确的方向。