Như những người khác đã chỉ ra, REGEXP gọi một hàm do người dùng định nghĩa, hàm này trước tiên phải được xác định và tải vào cơ sở dữ liệu. Có thể một số bản phân phối sqlite hoặc công cụ GUI bao gồm nó theo mặc định, nhưng cài đặt Ubuntu của tôi thì không. Giải pháp là
sudo apt-get install sqlite3-pcre
triển khai các biểu thức chính quy Perl trong một mô-đun có thể tải trong /usr/lib/sqlite3/pcre.so
Để có thể sử dụng nó, bạn phải tải nó mỗi khi bạn mở cơ sở dữ liệu:
.load /usr/lib/sqlite3/pcre.so
Hoặc bạn có thể đặt dòng đó vào của bạn ~/.sqliterc
.
Bây giờ bạn có thể truy vấn như sau:
SELECT fld FROM tbl WHERE fld REGEXP '\b3\b';
Nếu bạn muốn truy vấn trực tiếp từ dòng lệnh, bạn có thể sử dụng công -cmd
tắc để tải thư viện trước SQL của bạn:
sqlite3 "$filename" -cmd ".load /usr/lib/sqlite3/pcre.so" "SELECT fld FROM tbl WHERE fld REGEXP '\b3\b';"
Nếu bạn đang sử dụng Windows, tôi đoán sẽ có một tệp .dll tương tự ở đâu đó.