Синтаксис sqlite3 для регулярных выражений в поиске и замене - PullRequest
4 голосов
/ 16 октября 2010

Я могу использовать regexp для вывода списка попаданий из базы данных Sqlite3, но каков синтаксис «поиска и замены» с использованием regexp.

1 Ответ

4 голосов
/ 16 октября 2010

Если вы думаете об использовании обратных ссылок в строке замены, это невозможно, AFAIK. Вы делаете ОБНОВЛЕНИЕ следующим образом:

UPDATE foo
   SET bar = <some expr including baz>
 WHERE baz REGEXP <regex>

Но назначенное выражение должно полагаться на обычные строковые функции, такие как replace(...) и substr(...) (или ваши собственные функции расширения ). Невозможно вызвать группы, найденные оператором REGEXP.

РЕДАКТИРОВАТЬ: Вот конкретный пример, который интерпретирует числовые идентификаторы акций после префикса 'STOCK ID: ' в столбце item_key как номера акций:

UPDATE staff
   SET stock_number = CAST(substr(item_key, 11) AS INTEGER)
 WHERE item_key REGEXP '^STOCK ID: \d+'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...