我正在使用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_結果(更新後)看起來像什麼? –