最近工作中遇到一個(gè)需求,需要更新oracle數(shù)據(jù)庫(kù)中所有表的一個(gè)字段“flag”為“i”,語(yǔ)句為:
update table_name set flag = 'I'
? ?
“I”作為字符串,所以語(yǔ)句中I需要加上單引號(hào)。
由于數(shù)據(jù)庫(kù)中有多張表,我不想一條一條的語(yǔ)句寫,希望能夠通過sql語(yǔ)句直接生成所有的語(yǔ)句,所以寫了如下sql:
select 'update ' || table_name || ' set flag = 'I'' || ';' from user_tables
? ?
這個(gè)時(shí)候運(yùn)行,“報(bào)錯(cuò):ORA-00923: 未找到要求的 FROM 關(guān)鍵字”,報(bào)錯(cuò)位置就在'I”的第二個(gè)單引號(hào)位置,因?yàn)閱我?hào)配對(duì)關(guān)系,I不是字符串了,所以就報(bào)錯(cuò)了,那么如果要顯示一個(gè)單引號(hào)該怎么做呢?
試了語(yǔ)句:
select ''' from dual
? ?
同樣也會(huì)報(bào)錯(cuò),原來“'”作為一個(gè)關(guān)鍵字,如果需要顯示“'”,需要使用轉(zhuǎn)義字符,就像java的“\”一樣。
而Oracle的轉(zhuǎn)義字符就是單引號(hào)“'”,所以sql應(yīng)該這么寫:
select '''' from dual
? ?
怎么理解呢?把第二個(gè)單引號(hào)“'”看成“\”就好了,所以我需要的sql就是:
select 'update ' || table_name || ' set flag = ''I''' || ';' from user_tables
? ?
這樣就OK啦!
總結(jié)
以上就是關(guān)于Oracle轉(zhuǎn)義字符的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。
更多Oracle中轉(zhuǎn)義字符的詳細(xì)介紹相關(guān)文章請(qǐng)關(guān)注PHP中文網(wǎng)!
每個(gè)人都需要一臺(tái)速度更快、更穩(wěn)定的 PC。隨著時(shí)間的推移,垃圾文件、舊注冊(cè)表數(shù)據(jù)和不必要的后臺(tái)進(jìn)程會(huì)占用資源并降低性能。幸運(yùn)的是,許多工具可以讓 Windows 保持平穩(wěn)運(yùn)行。
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號(hào)
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://m.miracleart.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)