我正在使用MySQL 5.5.37。我想消除我的更新语句,如下所示的警告......如何重写我的MySQL更新语句以消除“截断不正确的INTEGER值”警告?
update resource r
set grade_id = convert(substring_index(substring_index(
r.description, 'Grade ', -1), ' ', 1), unsigned integer)
where r.description like '% Grade%'
and CONVERT(SUBSTRING_INDEX(SUBSTRING_INDEX(
r.description, 'Grade ', -1), ' ' ,1),UNSIGNED) > 0;
Query OK, 0 rows affected, 7 warnings (0.02 sec)
Rows matched: 1333 Changed: 0 Warnings: 7
mysql> show warnings;
+---------+------+--------------------------------------------------+
| Level | Code | Message |
+---------+------+--------------------------------------------------+
| Warning | 1292 | Truncated incorrect INTEGER value: '' |
| Warning | 1292 | Truncated incorrect INTEGER value: '' |
| Warning | 1292 | Truncated incorrect INTEGER value: '' |
| Warning | 1292 | Truncated incorrect INTEGER value: 'MyCo' |
| Warning | 1292 | Truncated incorrect INTEGER value: 'MyCo' |
| Warning | 1292 | Truncated incorrect INTEGER value: 'MyCo' |
| Warning | 1292 | Truncated incorrect INTEGER value: 'MyCo' |
+---------+------+--------------------------------------------------+
我不明白的是我如何重写我的查询给出不同的是没有价值的更新匹配什么样的警告正在抱怨。下面是我的查询,我列出正在更新不同的值...
mysql> select distinct substring_index(substring_index(
r.description, 'Grade ', -1), ' ', 1)
from resource r
where r.description like '% Grade%'
and CONVERT(SUBSTRING_INDEX(SUBSTRING_INDEX(
r.description, 'Grade ',-1),' ',1),UNSIGNED) > 0;
+-----------------------------------------------------------------------+
| substring_index(substring_index(r.description, 'Grade ', -1), ' ', 1) |
+-----------------------------------------------------------------------+
| 7 |
| 8 |
| 11 |
| 9 |
| 12 |
| 10 |
| 6 |
+-----------------------------------------------------------------------+
如何重写我的更新语句,以便它更新相同的值,而不tryihng截断不正确的整数?
显示您的数据。 – olegsv
我已经做了。它在最后一个查询中从资源r(其中r.description如'%Grade%'和CONVERT(SUBSTRING_INDEX(SUBSTRING_INDEX(r) .description,'Grade',-1),'',1),UNSIGNED)> 0;“。如果您希望我运行其他查询,请告诉我您希望我运行的内容。 – Dave
你能否展示_raw_数据是什么以及你希望表中的_final_结果(更新后)看起来像什么? –