Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySql大于字符串上的值_Mysql - Fatal编程技术网

MySql大于字符串上的值

MySql大于字符串上的值,mysql,Mysql,我想知道为什么当我运行其中xyz

我想知道为什么当我运行其中xyz<5,其中xyz是一个字符串时,它仍然返回结果。为什么或者怎样才能使搜索“大于”或对字符串执行任何数学运算,如><=时,返回的结果为零


如果使用数学函数搜索字符串,我希望它返回零结果,我不明白为什么它返回的结果带有“LKJLK”不能大于任何值,因为它不是一个数字。这个结果不应该是假的吗。??感谢您的帮助。

一个选项是添加一个额外的
WHERE
子句,以确保值是一个数字。例如:

SELECT Data
  FROM table
  WHERE Data > 10
    AND Data REGEXP '^-?[0-9]+$';
这是一个在行动中展示它的例子

还有其他方法可以测试该值是否为数字。在SO上搜索将提供不止几种方法

 Select
 USername
 from
 users
 where username>'     '

这将从用户名大于5个位置的用户中选择用户名。这就是您想要的吗?

对于文本值,“大于”和“小于”的“平均值”按字母顺序排在“平均值”之后,“按字母顺序排在”之前。这在数据库和几乎所有编程语言中都是相当标准的东西。如果您不想将字符串与这些运算符进行比较,那么可能不应该将字符串与这些运算符进行比较。不要指望数据库能读懂你的心思;编写代码来做你想做的事情,而不是做你不想做的事情。如果您的代码将字符串与数字进行比较,那么这是错误的代码。感谢您的回复,这很有意义。我正在尝试创建一个全局搜索按钮,搜索所有列,但因为有些列是字符串和int。我想我必须建立一个解决方案。谢谢。您正在创建一个带有MySQL后端的应用程序吗?您可能可以将逻辑放入应用程序代码中,以确保比较始终使用适当的类型。您当然不应该排除对字符串的比较搜索,因为测试文本列中的值是否小于“5”是非常合法的。