数据库特殊条件处理

编程

前公司里面有一段功能是这样的,当用户输入  A交B并C的时候,需要在数据库里面找到相应的记录,这个时候实际上需要在数据库里面翻译成数据库能识别的语法,实际上应该翻译成 (A && B)|| C,经过一番编码,最终是这样的,感觉还是挺有意思的,记录一下

function getUnionAndDifference($value)

{

$value = str_replace(" 交 ", " `&` ", $value);

$value = str_replace(" 并 ", " `+` ", $value);

$value = str_replace(" 差 ", " `-` ", $value);

// 除交并差外都加壳

$value = preg_replace_callback("/([<x{4e00}-x{9fa5}>_a-zA-Z0-9]+)/u", function($matches) {

return "{" . $matches[0] . "}";

}, $value);

$sql = preg_replace_callback("/{(.*?)}/s", function($matches) {

return "title like" .""%{$matches[0]}%"";

}, $value);

// 换成交并差的SQL语法

$sql = str_replace(" `&` ", " interSect ", $sql);

$sql = str_replace(" `+` ", " union ", $sql);

$sql = str_replace(" `-` ", " except ", $sql);

return $sql;

}

echo getUnionAndDifference(" A 交 B 并 C");

 

以上是 数据库特殊条件处理 的全部内容, 来源链接: utcz.com/z/517797.html

回到顶部