我正在尝试查找单词中是否存在字符串并将其提取。我使用了该instr()
函数,但它作为 LIKE 函数工作:如果部分或整个单词存在,它会返回它。
在这里,我想取出字符串“服务”,它可以工作,但是如果我将“服务”更改为“服务”,它仍然可以工作。我不想要那个。如果输入“服务”,它应该返回 null 而不是“服务”
修改的:
我在这里要做的是缩写公司名称的某些部分。
这是我的数据库表的样子:
Word | Abb
---------+-----
Company | com
Limited | ltd
Service | serv
Services | servs
这是代码:
Declare
Cursor Words Is
SELECT word,abb
FROM abbWords
processingWord VARCHAR2(50);
abbreviatedName VARCHAR(120);
fullName = 'A.D Company Services Limited';
BEGIN
FOR eachWord IN Words LOOP
--find the position of the word in name
wordPosition := INSTR(fullName, eachWord.word);
--extracts the word form the full name that matches the database
processingWord := Substr(fullName,instr(fullName,eachWord.word), length(eachWord.word));
--only process words that exist in name
if wordPosition > 0 then
abbreviatedName = replace(fullName, eachWord.word,eachWord.abb);
end if;
END lOOP;
END;
因此,如果用户输入“服务”,我不希望返回“服务”。我的意思是,如果找不到“服务”这个词,而不是返回“服务”这个词的位置,那么词的位置应该是 0