讓 SQLite 支援 REGEXP 語法
在使用 MySQL 的時候 REGEXP 正規表示式查詢好用又強大,雖然 SQLite 官方說有支援但其實意思是要使用者寫函式去擴充 SQLite。
因為最近寫 PHP, Python 都有用到 SQLite 所以就順便做一下使用筆記。
在 SQLite 建立連線之後,就要對他做擴充的動作,程式碼如下。
Python
import sqlite3
import re
def regexp(self, pattern, subject):
reg = re.compile(pattern)
return reg.search(subject) is not None
conn = sqlite3.connect('/path/to/db.sqlite3')
conn.create_function('REGEXP', 2, regexp)
conn.execute('DELETE FROM table REGEXP "\m"')
conn.close()
PHP
<?php
function regexp($pattern, $subject) {
return preg_match("/{$pattern}/", $subject);
}
$conn = new PDO('sqlite:/path/to/db.sqlite3');
$conn->sqliteCreateFunction('REGEXP', regexp, 2);
$conn->query('DELECT FROM table REGEXP "\m"');