Mysql如何ISNUMERIC()可用?

Posted

技术标签:

【中文标题】Mysql如何ISNUMERIC()可用?【英文标题】:Mysql how is ISNUMERIC() available? 【发布时间】:2013-07-18 09:51:26 【问题描述】:

在 MSSQL 中,我使用如下查询,它会根据我在 $search 中的内容进行不同的查询:文本或数字。

$query="
                IF (isnumeric('$search')=0)
                SELECT *
                FROM giper
                WHERE `name` LIKE '%$search%'
                ORDER BY `art`, `name`
                LIMIT 20

                ELSE
                SELECT *
                FROM giper
                WHERE `art` LIKE '$search%'
                ORDER BY `art`, `name`
                LIMIT 20";

我如何在 mysql 中做同样的事情?

谢谢。

【问题讨论】:

请注意您的代码不安全且容易发生 SQL 注入,最好使用 PreparedStatements 或 php 中的等效项 【参考方案1】:

也许这对你有帮助

            SELECT *
            FROM giper
            WHERE `name` LIKE '%$search%' OR `art` LIKE '$search%'
            ORDER BY `art`, `name`
            LIMIT 20

   SELECT *
          FROM giper
          WHERE if ('$search'=0 ,`name` LIKE '%$search%' , `art` LIKE '$search%')
          ORDER BY `art`, `name`
          LIMIT 20

【讨论】:

【参考方案2】:

SELECT语句中,可以在WHERE条件中使用OR,可以是

   SELECT * FROM giper
      WHERE name LIKE '%$search%' OR art LIKE '$search%'
      ORDER BY art, name LIMIT 20

【讨论】:

【参考方案3】:

您可以根据需要获得 SELECT,但不是数字 $search val

SELECT * FROM giper
WHERE (name LIKE '%$search%' OR art LIKE '$search%')
and '$search' NOT REGEXP '^-?[0-9]+$'
ORDER BY art, name LIMIT 20

【讨论】:

以上是关于Mysql如何ISNUMERIC()可用?的主要内容,如果未能解决你的问题,请参考以下文章

isnumeric()方法

Python isnumeric()方法

ISNUMERIC() 不适用于小数

Python3 isnumeric()方法

在 JavaScript 中验证十进制数字 - IsNumeric()

IsNumeric() 不适用于 Request.QueryString