9

我的表中有一个列,它包含诸如 100012345 之类的值。该列是 varchar。现在我想将其与其中的类似值进行比较:

... where myColumn > '100012345'

例如。我怎么能那样做?

谢谢!

4

4 回答 4

14
select * from your_table
where cast(your_column as signed) = 100012345
于 2012-10-05T15:20:27.200 回答
4

您是否尝试过正常执行此操作,例如:

... where myColumn > 100012345

应该工作!, mysql 在数字操作的上下文中自动将字符串转换为数字。以同样的方式,如果它在字符串上下文中使用,它会将数字转换为字符串。请参阅类型转换文档中的示例:

要将字符串转换为数字上下文中的数值,您通常无需执行任何操作,只需将字符串值当作数字使用:

mysql> SELECT 1+'1';
       -> 2

如果在算术运算中使用字符串,则会在表达式求值期间将其转换为浮点数。

如果您在字符串上下文中使用数字,则该数字会自动转换为字符串:

mysql> SELECT CONCAT('hello you ',2);
        -> 'hello you 2'
于 2012-10-05T15:26:19.147 回答
2

您可以将值转换为整数:

CAST(myColumn AS INTEGER)

于 2012-10-05T15:19:56.213 回答
2

您不必将字符串转换为整数进行比较,mysql 会自动进行。

http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html

于 2012-10-05T15:26:43.310 回答