1)instr()函數(shù)的格式? (俗稱(chēng):字符查找函數(shù))
創(chuàng)新互聯(lián)建站主營(yíng)科爾沁右翼中網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,成都app軟件開(kāi)發(fā),科爾沁右翼中h5小程序定制開(kāi)發(fā)搭建,科爾沁右翼中網(wǎng)站營(yíng)銷(xiāo)推廣歡迎科爾沁右翼中等地區(qū)企業(yè)咨詢(xún)
格式一:instr( string1, string2 ) ?? /?? instr(源字符串, 目標(biāo)字符串)
格式二:instr( string1, string2 [, start_position [, nth_appearance ] ] ) ? /?? instr(源字符串, 目標(biāo)字符串, 起始位置, 匹配序號(hào))
解析:string2 的值要在string1中查找,是從start_position給出的數(shù)值(即:位置,-1表示從尾部開(kāi)始倒數(shù)第1個(gè))開(kāi)始在string1檢索,檢索第nth_appearance(幾)次出現(xiàn)string2。
SELECT?A2.id,A1.name?
from?A2?left?join
A1?on?A2.codeall=A1.code
where?LENGTHB(codeall)-LENGTHB(replace(codeall,',',''))?=?0
union?all
SELECT?A2.id,A11.name||','||A12.name?
from?A2?left?join
A1?A11?on?substr(A2.codeall,1,instr(A2.codeall,',')-1)=A11.code?left?join
A1?A12?on?substr(A2.codeall,instr(A2.codeall,',')+1,instr(A2.codeall,',',-1,1)-1)=A12.code
where?LENGTHB(codeall)-LENGTHB(replace(codeall,',',''))?=?1
union?all
SELECT?A2.id,A11.name||','||A12.name?||','||A13.name?
from?A2?left?join
A1?A11?on?substr(A2.codeall,1,instr(A2.codeall,',')-1)=A11.code?left?join
A1?A12?on?substr(A2.codeall,instr(A2.codeall,',')+1,instr(A2.codeall,',',1,2)-1)=A12.code
A1?A13?on?substr(A2.codeall,instr(A2.codeall,',',1,2)+1,instr(A2.codeall,',',-1,1)-1)=A13.code
where?LENGTHB(codeall)-LENGTHB(replace(codeall,',',''))?=?2
union?all
SELECT?A2.id,A11.name||','||A12.name?||','||A13.name?||','||A14.name?
from?A2?left?join
A1?A11?on?substr(A2.codeall,1,instr(A2.codeall,',')-1)=A11.code?left?join
A1?A12?on?substr(A2.codeall,instr(A2.codeall,',')+1,instr(A2.codeall,',',1,2)-1)=A12.code
A1?A13?on?substr(A2.codeall,instr(A2.codeall,',',1,2)+1,instr(A2.codeall,',',1,3)-1)=A13.code
A1?A14?on?substr(A2.codeall,instr(A2.codeall,',',1,3)+1,instr(A2.codeall,',',-1,1)-1)=A14.code
where?LENGTHB(codeall)-LENGTHB(replace(codeall,',',''))?=?3
看你的意思應(yīng)該是一個(gè)表的數(shù)據(jù)替換另一個(gè)表的相關(guān)數(shù)據(jù)吧,那就用merge語(yǔ)句就可以。
update也可以。
所謂替換應(yīng)該就是修改,如果相關(guān)內(nèi)容太多,那就分次分批進(jìn)行修改就好了。
上面的回答都是對(duì)的,還是多說(shuō)一句,如果你只是想改最后一個(gè)字符(xx這兩個(gè)字符中也含有“變”不需要改):
udpate
test
set
name
=
substr(name
,1,length(name
)
-
1)
||
'站';
commit;
若確認(rèn)xx兩個(gè)字符不含“變”,或者含的話也要改掉,那么:
update
test
set
name
=
replace(name,'變','站');commit;
可以通過(guò)replace函數(shù)來(lái)獲取特定字符串后,進(jìn)行字段更新實(shí)現(xiàn):
sql:update tablename set name=replace(name,'替換前字段','替換后字段') where name like '%替換前字段%'。
上面的sql語(yǔ)句的意思是替換tablename中name字段的“替換前字段“為”替換后字段“, where后面的語(yǔ)句是篩選出字段中帶有”替換前字段“的name值。
望采納
直接用update語(yǔ)句替換即可。
如test表中有如下數(shù)據(jù):
現(xiàn)要將sal中的數(shù)字都替換成10,用以下語(yǔ)句:
update?test?set?sal=10;
commit;
更新后結(jié)果:
注意:執(zhí)行update語(yǔ)句后,需要進(jìn)行commit,也就是提交,這樣才會(huì)使update生效。
oracle中可以通過(guò)全文檢索替換來(lái)實(shí)現(xiàn)單個(gè)字符的替換。
設(shè)置全文檢索
步驟步驟一:檢查和設(shè)置數(shù)據(jù)庫(kù)角色
首先檢查數(shù)據(jù)庫(kù)中是否有CTXSYS用戶(hù)和CTXAPP腳色。如果沒(méi)有這個(gè)用戶(hù)和角色,意味著你的數(shù)據(jù)庫(kù)創(chuàng)建時(shí)未安裝intermedia功能 (10G默認(rèn)安裝都有此用戶(hù)和角色)。你必須修改數(shù)據(jù)庫(kù)以安裝這項(xiàng)功能。默認(rèn)安裝情況下,ctxsys用戶(hù)是被鎖定的,因此要先啟用ctxsys的用戶(hù)。
步驟二:賦權(quán)
在ctxsys用戶(hù)下,授予測(cè)試用戶(hù)oratext以下權(quán)限:
GRANT resource, CONNECT, ctxapp TO oratext;
GRANT EXECUTE ON ctxsys.ctx_cls TO oratext;
GRANT EXECUTE ON ctxsys.ctx_ddl TO oratext;
GRANT EXECUTE ON ctxsys.ctx_doc TO oratext;
GRANT EXECUTE ON ctxsys.ctx_output TO oratext;
GRANT EXECUTE ON ctxsys.ctx_query TO oratext;
GRANT EXECUTE ON ctxsys.ctx_report TO oratext;
GRANT EXECUTE ON ctxsys.ctx_thes TO oratext;
GRANT EXECUTE ON ctxsys.ctx_ulexer TO oratext;
步驟三:設(shè)置詞法分析器(lexer)
--查詢(xún)測(cè)試
SELECT score(20),t.* FROM textdemo t WHERE contains(book_abstract,'移動(dòng)城堡 or 俄羅斯',20)0;
SELECT score(20),t.* FROM textdemo t WHERE contains(book_abstract,'移動(dòng)城堡 or 歐洲',20)0;
--基本查詢(xún)
SELECT score(20),t.* FROM textdemo t WHERE contains(book_abstract,'移動(dòng)城堡',20)0;
--查詢(xún)包含多個(gè)詞語(yǔ)and測(cè)試通過(guò)
SELECT score(20),t.* FROM textdemo t WHERE contains(book_abstract,'移動(dòng)城堡 and 歐洲',20)0;
測(cè)試通過(guò)。