我想更新字段的值,如果字符串列在兩個數字之間。更新MySQL字段;條件=兩個數字之間的字符串字段
UPDATE SAMPLE.EXAMPLE
SET modNum = CONCAT(modNum,"26")
WHERE modNum NOT LIKE '%26%'
AND (procKey BETWEEN 90000 AND 99123 OR procKey = 77444);
不幸的是我得到一個錯誤:
Error Code: 1292. Truncated incorrect DOUBLE value: '4123F '
我很驚訝,因爲當我做了選擇,我得到預期的結果。
CREATE TABLE語句:
'CREATE TABLE `example` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`modNum` char(4) DEFAULT NULL,
`procKey` char(8) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1'
樣本數據:
INSERT INTO `SAMPLE`.`EXAMPLE` (`modNum`, `procKey`) VALUES ('42', '99001');
INSERT INTO `SAMPLE`.`EXAMPLE` (`modNum`, `procKey`) VALUES ('42', '9900f');
我能做些什麼來更新給我的條件列?
對我來說,它看起來像一個bug。我能想到的最好的方法是使用正則表達式來檢查procKey的值是否爲整數。我更改我的UPDATE語句爲:
UPDATE SAMPLE.EXAMPLE
SET modNum = CONCAT(modNum,"26")
WHERE modNum NOT LIKE '%26%'
AND procKey REGEXP '^[0-9]+$'
AND (procKey BETWEEN 90000 AND 99123
OR procKey = 77444);
請讓我知道是否有更好的方法。
看起來像一個錯誤。 – jcho360
modNum的數據類型是什麼? –
謝謝@ jcho360。如果它是一個我能夠相信的錯誤,你有沒有建議的方法呢? – donbyte