2013-08-27 44 views
0

你好我想基於另一列如值做一個簡單的更新查詢比較的數字和字符串混合列值的MySQL

UPDATE tbl1 SET col2=1 WHERE col1 < 10 

其中COL1包含以下值:

1 ,2,3 .... 19,20,N1,N2 ... N9

但是,當查詢使用非數字字符命中某個值時,該查詢會被轟出。我已經試過:

UPDATE tbl1 SET col2=1 WHERE CAST(col1 AS UNSIGNED INT) < 10 

毫不奇怪的是沒有工作,要麼,但我想不到的是,在第一個例子檢查時,如果N1 < 10它會忽略該行,而不是失敗的......?

我該怎麼做?

+0

是前綴'N'常量? –

+0

它可以是M,F,N,L – doovers

+0

以下是如何檢查是否是MySql中的數字:http://stackoverflow.com/questions/75704/how-do-i-check-to-see-if-a -value-is-an-integer-in-mysql – dcaswell

回答

0

您可以使用REPLACE()

WHERE CAST(REPLACE(REPLACE(REPLACE(REPLACE(col1, 'M', ''), 'F', ''), 'N', ''), 'L', '') AS UNSIGNED) < 10 

這個程序做,查詢不是在性能方面確實不錯,但會滿足您的需求。