2
我想匹配來自幾個部分條款導致XQuery函數搜索多含有()基於標記化字符串
- 「JOH做」匹配「李四」
- 「做喬」也匹配「李四」
- 等
隨着包含(),只有‘約翰做’或‘[約’將匹配結果。
$item[contains(., "john do")]
我想這樣做......
$item[contains(., "joh") and contains(., "do")]
...不管有多少項在搜索字符串。
我試圖用記號化(),然後在其上一個循環來創造什麼我想
let $search := "john do"
let $terms := fn:tokenize($search, '\s')
let $query := string-join(
(for $t in $terms
return
concat('contains(.,"', $t, '")')
), ' and '
)
return $query
這個循環的結果是完全按照我希望它是,但它沒有任何效果在XPath查詢,因爲它只是文本(顯然CONCAT()生產只是文本)
$item[$query]
我錯過了什麼?那個例子中的函數比concat()更好嗎?
感謝您的幫助!
非常感謝!我不知道這些表達式,並且它完美地工作。它也很快。我剛剛修改了代碼以標記化$ search而不是$ item,並將contains()設置爲$ item,而不是$ search '爲$ item中的$ item let $ search:=「john do」 let $ terms: = fn:tokenize($ search,'\ s') 其中$ terms中每個$ term滿足包含($ item,$ term) return $ item' –
@GP是的,這聽起來像是更常見的用例和什麼我會預料到的。但是你對我的問題描述就像你想要的那樣。無論如何,這是重要的概念,交換變量很容易:)很高興它有幫助 – dirkk