2014-08-28 48 views
0

我必須在pl/sql中的較大的字符串中找到字符串的位置。較大的字符串在較大的字符串中的位置

可以說這個字符串是:'allthebest all the best' 只有當它是一個單獨的單詞而不是字符串的一部分時,我必須得到字符串「the」的位置。 在上面的例子中,單詞「the」的位置應該是16,對應於獨特的單詞而不是4。不應該考慮「allthebest」中單詞「the」的出現。

嘗試這樣:

select regexp_instr('allthebest all the best',' the ') from dual; 

Ofcourse,它工作時,有一個空間前述並按照單詞 「the」。 但是,對於字符串爲'allthebest all best the'的情況不起作用(注意:'the'後面沒有尾隨空格)

如何使它只能查找獨立詞彙在一個輸入字符串中,它本身不是pl/sql中較小字符串的一部分?

回答

1

嘗試模式'([^[:alpha:]]|^)the([^[:alpha:]]|$)'

這是「任何非字母或字符串的開頭「後面跟着你要查找的單詞,後面跟着」任何非字母或OR結尾「 e字符串「

+0

感謝詹姆斯。有用。但是,我想了解你是如何抵達它的。你能指出我對這裏的這些正則表達符號代表了什麼以及如何應用這些符號以便我能夠理解它們並開始使用它們?當我谷歌這些,我迷路了很多材料,我不知道哪一個會給最好的信息。現在,說實話,他們看起來像是一羣人物,對我來說是一個未經訓練的眼睛! – Casey 2014-08-28 19:45:11

+0

如果單詞「the」是pl/sql代碼中的變量,該怎麼辦? Append在這裏似乎不起作用:'([^ [:alpha:]] | ^)|| <要搜索的變量字符串> || ([^ [:alpha:]] | $)' – Casey 2014-08-28 19:54:19

+0

@Casey:這是我使用的語法:http://www.sqlsnippets.com/en/topic-10764.html – 2014-08-28 20:03:25

2

假設您可以簡單地打破空格字符上的字符串以生成「單詞」(更復雜的解決方案是查找指示單詞結尾的標點符號),您可以簡單地在開始和結束的字符串,然後從結果中減去1(以賬戶的事實,你加入之初的額外空間)

instr(' ' || <<your string>> || ' ', ' the ') - 1 
相關問題