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()可用?的主要内容,如果未能解决你的问题,请参考以下文章