preg_replace用于更改sql查询字符串

时间:2012-07-17 17:29:53

标签: sqlite preg-replace

我遇到sqlite3和“num_rows”问题。我不能要求像mysql这样的结果的num_rows。现在我不想自动执行SELECT查询以请求rowcount。 有没有办法在两种模式之间替换所有模式?

    SELECT date,name,etc FROM myTable WHERE gender=1
// to
SELECT count(*) FROM myTable WHERE gender=1

我必须用count(*)替换SELECT和FROM之间的所有内容。 我可以这个preg_replace吗?

1 个答案:

答案 0 :(得分:2)

对于您提供的示例,它很简单,但我想它不适用于所有查询语法。但试一试:

PHP代码(不知道你使用的语言):

$count_sql = preg_replace('/^(SELECT)\\s+.*?\\s+(FROM.*)$/s', '$1 count(*) $2', $select_sql);

但我猜,有一种更优雅的方法可以找到num_rows的东西。您可以使用子查询,例如:

SELECT COUNT(*) FROM ( *** original query here *** )

效率不高,但您不必处理查询语法。