Я пытаюсь получить все заголовки, которые содержат определенное слово, из моей базы данных в XQuery в SQL, я бы использовал WHERE title LIKE '%England%' - мне интересно, как это сделать в XQuery?

Мой запрос XQuery выглядит так:

(:Selects document:)
for $x in doc ("tmdb_5000_movies(1).xml")/movies/movie 
(: :)
where $x/title (:NOT SURE WHAT TO PUT HERE:)
(:0:)
return $x/ *
0
BradleighJL 29 Ноя 2019 в 19:02
Эта строка кода делает то же самое? для $ x в doc ("tmdb_5000_movies (1) .xml") / movies / movie [соответствует (title, '. * England')] (: 0 :) return $ x / *
 – 
BradleighJL
29 Ноя 2019 в 19:07

2 ответа

У меня нет базы данных SQL для тестирования под рукой, но

doc("movies.xml")//movie[matches(title, '^.*England.*$')]/*

Работает в других средах выполнения xquery. Вы должны проверить, нужно ли вам FLWOR-выражение.

Регулярное выражение, которое @BradleighJL использует в своем ответе, может быть быстрее (.*England) и также должно соответствовать всем случаям. Я просто хотел провести различие между "% England" ('^.*England$') и %England%.

1
line-o 1 Дек 2019 в 13:13

Это делает это.

for $x in doc ("tmdb_5000_movies(1).xml")/movies/movie [matches(title, '.*England')] 

return $x/ *

Очень предпочитаю SQL, однако я понимаю, почему это будущее

1
BradleighJL 29 Ноя 2019 в 19:10