2013-08-27 42 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 

这个程序做,查询不是在性能方面确实不错,但会满足您的需求。