gpt4 book ai didi

php - 在SQL查询中插入字符串以更改PHP的顺序

转载 作者:行者123 更新时间:2023-12-03 19:36:56 25 4
gpt4 key购买 nike

我想在SQLite查询的每个ORDER BY子句之前插入“ COLLATE NOCASE”。
这是我到目前为止的内容:

     $string = preg_replace('~(ORDER\s+BY\s+`?.+`?)\s+([ASC|DESC]?)~iU', '$1 COLLATE NOCASE $2', $string);


输出为:


从`test`命令中按`x` COLLATE选择`x`,`y`
NOCASE ASC,`z` ASC LIMIT 0,10


第一个实例被匹配并替换。不替换第二个实例(由于该模式中的ORDER BY子句)。

最佳答案

将您的正则表达式更改为:

$query = "SELECT `x`, `y` FROM `test` ORDER BY `x` ASC, `z` ASC LIMIT 0, 10";
$query = preg_replace('~(ORDER BY|,)(\s+\S+)\s+(?=ASC|DESC)~iU', ' $1$2 COLLATE NOCASE ', $query);
echo $query,"\n";


输出:

SELECT `x`, `y` FROM `test` ORDER BY `x` COLLATE NOCASE ASC, `z` COLLATE NOCASE ASC LIMIT 0, 10

关于php - 在SQL查询中插入字符串以更改PHP的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33610609/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com