0

我对 sqlite3 和“num_rows”有疑问。我不能要求像 mysql 这样的结果的 num_rows。现在我不想自动化我的 SELECT 查询来要求行数。有没有办法在两种模式之间全部替换?

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

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

4

1 回答 1

2

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

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

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

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

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

它不是很有效,但您不必处理查询语法。

于 2012-07-17T17:35:24.350 回答