【发布时间】:2015-05-23 19:45:09
【问题描述】:
假设我有下面的表格和里面的数据:
CREATE TABLE urls (url TEXT);
INSERT INTO urls VALUES('https://www.google.ru/?gws_rd=ssl#newwindow=1&q=&safe=off');
INSERT INTO urls VALUES('https://www.google.ru/?gws_rd=ssl#newwindow=1&safe=off&q=1');
INSERT INTO urls VALUES('https://www.google.ru/?gws_rd=ssl#newwindow=1&q=2&safe=off');
INSERT INTO urls VALUES('https://www.google.ru/?gws_rd=ssl#newwindow=1&q=23&safe=off');
我需要选择所有 URL 包含非空查询参数的记录(在这种情况下,除了第一条记录)。
我正在使用 SQLite,所以我决定像这样使用 REGEXP 运算符:
string sql = @"SELECT * FROM urls WHERE url REGEXP '\/(?:www\.)?google.+?q=([^&]+)(?:&|$)'";
var command = new SQLiteCommand(sql, dbConnection);
SQLiteDataReader reader = command.ExecuteReader();
while (reader.Read())
{
Console.WriteLine("Url: " + reader["url"]);
}
但它给了我以下错误:
“System.Data.SQLite.SQLiteException”类型的未处理异常 发生在 System.Data.SQLite.dll 中
附加信息:SQL 逻辑错误或缺少数据库
没有这样的功能:REGEXP
有什么办法可以解决吗?如果没有,我该怎么办?
提前致谢。
【问题讨论】:
标签: c# sql regex sqlite system.data.sqlite