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