对包含文本和数字的varchar字段执行SELECT



我有一个字段remote_number,它是Varchar(30(。

大多数数据的长度在3到11位之间。

当调用是匿名的时,此字段值设置为"匿名"。

我需要从值为>999或匿名。

我可以独立进行这些查询,例如

SELECT * FROM call_history WHERE remote_number>999;

SELECT * FROM call_history WHERE remote_number='anonymous'; 

组合2时,如

select * from call_history where (remote_number>999 OR remote_number='anonymous');

remote_number字段中所有匿名的数据由于不是双精度数据而被截断。

Warning | 1292 | Truncated incorrect DOUBLE value: 'anonymous'

如何调整此查询以使"匿名"数据不被截断?

编辑:数据类型1

查询已运行警告

这不起作用的原因是,如果我们说remote_number>999我们暗示remote_number是一个数字,但很明显,返回的值是一个字符串而不是数字。

为了修复我指定的字符长度。

AND (char_length(remote_number)>3 OR remote_number='anonymous'

最新更新