;
帖子
3919 
精华
积分
11710 
鱼币
0 ¥ 
来自
大连 
在线时间
1858 小时 
注册时间
2007-6-11 
最后登录
2009-10-20 

贴图大师勋章新人进步勋章宣传大使勋章论坛元老勋章

3
发表于 2009-1-5 19:48 | 只看该作者
SQL璇硶 - 缂栫▼搴 - Powered by SupeSite

浣犵殑浣嶇疆锛缂栫▼搴 >> 璧勮 >> 鏁版嵁搴撶鐞 >> SQL璇硶 >> 璇︾粏鍐呭 鍦ㄧ嚎鎶曠ǹ

SQL璇硶

鍙戝竷: 2008-7-01 14:16 |  浣滆: 缃戠粶杞浇 |   鏉ユ簮: 缃戠粶杞浇 |  鏌ョ湅: 42娆

SQL璇硶

Chapter 4. SQL 璇硶

Table of Contents

4.1. 璇嶆硶缁撴瀯

4.1.1. 鏍囪瘑绗﹀拰鍏抽敭瀛

4.1.2. 甯搁噺

4.1.3. 鎿嶄綔绗

4.1.4. 鐗规畩瀛楃

4.1.5. 娉ㄩ噴

4.1.6. 璇嶆硶浼樺厛绾

4.2. 鍊艰〃杈惧紡

4.2.1. 瀛楁寮曠敤

4.2.2. 浣嶇疆鍙傛暟

4.2.3. 涓嬫爣

4.2.4. 瀛楁閫夋嫨

4.2.5. 鎿嶄綔绗﹁皟鐢

4.2.6. 鍑芥暟璋冪敤

4.2.7. 鑱氶泦琛ㄨ揪寮

4.2.8. 绫诲瀷杞崲

4.2.9. 鏍囬噺瀛愭煡璇

4.2.10. 鏁扮粍鏋勯犲櫒

4.2.11. 琛屾瀯閫

4.2.12. 琛ㄨ揪寮忚绠楄鍒

鏈珷鎻忚堪 SQL 鐨勮娉曘 杩欎簺鍐呭鏄悊瑙i殢鍚庡悇绔犵殑鍩虹锛岄偅浜涚珷閲岄潰灏嗚缁嗕粙缁 SQL 鍛戒护濡備綍鐢ㄤ簬瀹氫箟鍜屼慨鏀规暟鎹

鎴戜滑涔熷缓璁偅浜涘凡缁忓緢鐔熸倝 SQL 鐨勭敤鎴蜂粩缁嗛槄璇绘湰绔狅紝鍥犱负鏈変竴浜涜鍒欏拰姒傚康鍦 SQL 鏁版嵁搴撲箣闂村疄鐜板緱骞朵笉涓鑷达紝鎴栬呮槸鏈変簺涓滆タ鏄 PostgreSQL 鐗规湁鐨勩

4.1. 璇嶆硶缁撴瀯

SQL 杈撳叆鐢变竴绯诲垪鍛戒护缁勬垚銆 涓鏉″懡浠ゆ槸鐢变竴绯诲垪璁板彿鏋勬垚锛 鐢ㄤ竴涓垎鍙凤紙";"锛夌粨灏俱 杈撳叆娴佺殑缁堟涔熺粨鏉熶竴鏉″懡浠ゃ傚摢浜涜鍙锋槸鍚堟硶鐨勫彇鍐充簬鐗瑰畾鍛戒护鐨勮娉曘

璁板彿鍙互鏄竴涓叧閿瓧锛 涓涓爣璇嗙锛屼竴涓 寮曞彿鍖呭洿鐨勬爣璇嗙锛 涓涓枃鏈紙鎴栧父閲忥級锛屾垨鑰呮槸鐗规畩鐨勫瓧绗︾鍙枫 璁板彿閫氬父鐢辩┖鐧藉垎闅旓紙绌烘牸锛宼ab锛屾崲琛岀锛夛紝浣嗗鏋滀笉瀛樺湪娣锋穯鐨勬椂鍊欎篃鍙互涓嶇敤 锛堥氬父鍙槸涓涓壒娈婂瓧绗︿笌涓浜涘叾瀹冭鍙风被鍨嬬浉鑱旂殑鏃跺欙級銆

鍙﹀锛屽湪 SQL 杈撳叆閲屽彲浠ユ湁娉ㄩ噴銆 瀹冧滑涓嶆槸璁板彿锛屽畠浠疄闄呬笂绛夋晥浜庣┖鐧姐

姣斿锛屼笅鍒楀懡浠ゆ槸锛堣娉曚笂锛夊悎娉曠殑 SQL 杈撳叆锛

SELECT * FROM MY_TABLE;

UPDATE MY_TABLE SET A = 5;

INSERT INTO MY_TABLE VALUES (3, 'hi there');

杩欓噷鏄笁鏉″懡浠ょ殑搴忓垪锛屾瘡鏉′竴琛岋紙灏界骞朵笉瑕佹眰杩欎箞鍋氾紱 澶氭潯鍛戒护鍙互鍦ㄤ竴琛岄噷锛屽苟涓斿懡浠ゅ彲浠ュ悎鐞嗗湴鍒嗚鎴愬涓锛夈

濡傛灉浠庡摢浜涜鍙锋爣璇嗗懡浠わ紝鍝簺鏄搷浣滄暟鎴栧弬鏁扮殑瑙掑害鑰冭檻锛 SQL 璇硶骞朵笉鏄潪甯镐竴鑷淬傞氬父澶村嚑涓鍙锋槸鍛戒护鍚嶅瓧锛屽洜姝や笂闈㈢殑渚嬪瓙鎴戜滑閫氬父鍙互璇存槸涓涓"SELECT"锛 涓涓"UPDATE"锛屽拰涓涓"INSERT"鍛戒护銆 涓嶈繃锛 UPDATE 鍛戒护鎬绘槸瑕佹眰涓涓 SET 鍦ㄦ煇涓綅缃嚭鐜帮紝骞朵笖杩欎釜鍙樹綋鐨 INSERT 杩樿姹傛湁涓涓 VALUES 鎵嶅畬鏁淬傛瘡鏉″懡浠ょ殑鍑嗙‘璇硶瑙勫垯閮藉湪 Part VI 閲屾弿鍐欍

4.1.1. 鏍囪瘑绗﹀拰鍏抽敭瀛

璞′笂闈㈢殑渚嬪瓙閲岀殑 SELECT锛孶PDATE锛 鎴 VALUES 杩欐牱鐨勮鍙烽兘鏄叧閿瓧鐨勪緥瀛愶紝 涔熷氨鏄偅浜涘湪 SQL 璇█閲屾湁鍥哄畾鍚箟鐨勫崟璇嶃 璁板彿 MY_TABLE 鍜 A 鏄爣璇嗙鐨勪緥瀛愩傛牴鎹娇鐢ㄥ畠浠殑鍛戒护鐨勪笉鍚岋紝瀹冧滑鏍囪瘑琛紝瀛楁锛屾垨鑰呭叾瀹冩暟鎹簱瀵硅薄鐨勫悕瀛椼 鍥犳锛屾湁鏃跺欏彧鏄畝鍗曞湴鍙畠浠"鍚嶅瓧"銆傚叧閿瓧鍜屾爣璇嗙鏈夌潃鍚屾牱鐨勮瘝娉曠粨鏋勶紝鎰忔濇槸鎴戜滑鍦ㄦ病鏈夎璇嗚繖绉嶈瑷涔嬪墠鏄棤娉曞尯鍒嗕竴涓鍙锋槸鏍囪瘑绗﹁繕鏄悕瀛椼 浣犲彲浠ュ湪 Appendix C 閲屾壘鍒颁竴涓叧閿瓧鐨勫畬鏁村垪琛ㄣ

SQL 鏍囪瘑绗﹀拰鍏抽敭瀛楀繀椤讳互涓涓瓧姣嶅紑澶 锛坅-z 浠ュ強甯﹀彲鍖哄埆鏍囪鐨勫瓧姣嶄互鍙婇潪鎷変竵瀛楁瘝 锛夋垨涓嬪垝绾垮紑澶 锛坃锛夊紑澶淬傛爣璇嗙鍜屽叧閿瓧閲岄殢鍚庣殑瀛楃鍙互鏄瓧姣嶏紝鏁板瓧锛0-9锛夛紝 鎴栬呬笅鍒掔嚎锛屼絾 SQL 鏍囧噯涓嶄細瀹氫箟鍖呭惈鏁板瓧鎴栬呬互涓嬪垝绾垮紑澶存垨缁撳熬鐨勫叧閿瓧銆

绯荤粺浣跨敤涓嶈秴杩 NAMEDATALEN-1 涓瓧绗︿綔涓烘爣璇嗙锛 浣犲彲浠ュ湪鍛戒护涓啓鏇撮暱鐨勫悕瀛楋紝浣嗗畠浠細琚埅鏂傜己鐪佹椂锛 NAMEDATALEN 鏄 64锛屽洜姝ゆ爣璇嗙鏈澶ч暱搴︽槸 63 濡傛灉瑙夊緱杩欎釜闄愬埗鏈夐棶棰橈紝閭d箞浣犲彲浠ュ湪 src/include/postgres_ext.h 閲屼慨鏀 NAMEDATALEN 鏉ユ敼鍙樺畠銆

鏍囪瘑绗﹀拰鍏抽敭瀛楀悕瀛楅兘鏄ぇ灏忓啓鏃犲叧鐨勩傚洜姝

UPDATE MY_TABLE SET A = 5;

涔熷彲浠ョ瓑鏁堝湴鍐欐垚

uPDaTE my_TabLE SeT a = 5;

涓绉嶅ソ涔犳儻鏄妸鍏抽敭瀛楀啓鎴愬ぇ鍐欙紝鑰屽悕瀛楃瓑鐢ㄥ皬鍐欍

UPDATE my_table SET a = 5;

杩樻湁绗簩绉嶆爣璇嗙锛氬垎闅旀爣璇嗙 鎴栧紩鍙峰寘鍥寸殑鏍囪瘑绗︺ 瀹冩槸閫氳繃鍦ㄥ弻寮曞彿锛" 锛 閲屽寘鍥翠换鎰忓瓧绗﹀簭鍒楀舰鎴愮殑銆傚垎闅旀爣璇嗙鎬绘槸涓涓爣璇嗙锛岃屼笉鏄叧閿瓧銆傚洜姝わ紝浣犲彲浠ョ敤 "SELECT" 琛ㄧず涓涓瓧娈靛悕瀛楁垨鑰呭悕瀛楀彨 "SELECT" 鐨勮〃锛岃屼竴涓病鏈夊紩鍙风殑 SELECT 灏嗚褰撳仛涓鏉″懡浠ょ殑涓閮ㄥ垎锛屽洜姝ゅ鏋滄妸瀹冨綋鍋氫竴涓〃鐨勫悕瀛楁垨鑰呭瓧娈靛悕瀛楃敤鐨勮瘽灏变細浜х敓涓涓垎鏋愰敊璇備笂闈㈢殑渚嬪瓙鍙互鐢ㄥ紩璧风殑鏍囪瘑绗﹁繖涔堝啓锛

UPDATE "my_table" SET "a" = 5;

寮曞彿鍖呭洿鐨勬爣璇嗙鍙互鍖呭惈闄ゅ紩鍙锋湰韬互澶栫殑浠讳綍鍏跺畠瀛楃銆 瑕佸寘鍚竴涓弻寮曞彿锛屾垜浠彲浠ュ啓涓や釜鍙屽紩鍙枫 杩欐牱鎴戜滑灏卞彲浠ユ瀯閫犻偅浜涘師鏈槸涓嶅厑璁哥殑琛ㄦ垨鑰呭瓧娈靛悕瀛楋紝 姣斿閭d簺鍖呭惈绌虹櫧鎴栦笌鍙风殑鍚嶅瓧銆備絾闀垮害闄愬埗渚濇棫銆

鎶婁竴涓爣璇嗙鐢ㄥ紩鍙峰寘鍥寸殑璧锋潵鍚屾椂涔熶护瀹冨ぇ灏忓啓鐩稿叧锛岃屾病鏈夊紩鍙峰寘鍥磋捣鏉ョ殑鍚嶅瓧鎬绘槸杞垚灏忓啓銆 姣斿锛屾垜浠涓烘爣璇嗙 FOO锛宖oo 鍜 "foo" 鏄竴鏍风殑 PostgreSQL鍚嶅瓧锛 浣 "Foo" 鍜 "FOO" 涓庝笂闈笁涓互鍙婂畠浠箣闂撮兘鏄笉鍚岀殑銆 锛圥ostgreSQL 閲屽鏈姞寮曞彿鐨勫悕瀛愭绘槸杞崲鎴愬皬鍐欙紝 杩欏拰 SQL 鏄笉鍏煎鐨勶紝SQL 閲岃姹傛湭鐢ㄥ紩鍙峰寘鍥磋捣鏉ョ殑鍚嶅瓧鎬绘槸杞垚澶у啓銆 鍥犳 foo 绛変簬 "FOO"銆 濡傛灉浣犳兂鍐欏彲绉绘鐨勭▼搴忥紝閭d箞鎴戜滑寤鸿浣犺涔堝氨鎬绘槸寮曞彿鍖呭洿鐨勬煇涓悕瀛楋紝瑕佷箞灏卞潥鍐充笉寮曘傦級

4.1.2. 甯搁噺

鍦 PostgreSQL 閲屾湁涓夌闅愬惈绫诲瀷鐨勫父閲忥細 瀛楃涓诧紝浣嶄覆锛屽拰鏁板笺 甯搁噺涔熷彲浠ュ0鏄庝负鏄庣‘鐨勭被鍨嬶紝杩欐牱灏卞彲浠ヤ娇鐢ㄦ洿鍑嗙‘鐨勮〃鐜板舰寮忎互鍙婂彲浠ラ氳繃绯荤粺鏇存湁鏁堝湴澶勭悊銆 杩欎簺鍊欓夌殑鍦ㄥ悗闈㈢殑灏忚妭鎻忚堪銆

4.1.2.1. 瀛楃涓插父閲

SQL 閲岀殑涓涓瓧涓叉枃鏈槸鐢ㄥ崟寮曞彿锛'锛夊寘鍥寸殑浠绘剰瀛楃搴忓垪锛 姣斿锛'This is a string'銆 杩欑澹版槑瀛椾覆甯搁噺鐨勬柟娉曟槸 SQL 鏍囧噯瀹氫箟鐨勩 鍦ㄨ繖绉嶇被鍨嬬殑瀛椾覆甯搁噺閲屽祵鍏ュ崟寮曞彿鐨勬爣鍑嗗吋瀹圭殑鍋氭硶鏄暡鍏ヤ袱涓繛缁殑鍗曞紩鍙锋瘮濡傦紝'Dianne''s horse'銆傚彟澶栵紝PostgreSQL 鍏佽鐢ㄧ敤涓涓弽鏂滄潬锛"\'"锛夋潵閫冮稿崟寮曞彿锛 鍥犳鍚屼竴涓瓧涓插彲浠ュ啓鎴'Dianne\'s horse'銆備笉杩囷紝灏嗘潵鐗堟湰鐨 PostgreSQL 灏嗕笉鍏佽杩欎箞鐢紝 鎵浠ヤ娇鐢ㄥ弽鏂滄墰鐨勫簲鐢ㄥ簲璇ヨ浆鎹㈡垚涓婇潰璇寸殑鏍囧噯鍏煎鐨勬柟娉曘

鍙﹀涓涓 PostgreSQL 鎵╁睍鏄繕鍙互浣跨敤 C-椋庢牸鐨勫弽鏂滄潬閫冮革細 \b 鏄竴涓鏍硷紝\f 鏄竴涓繘绾革紝\n 鏄竴涓崲琛岀锛 \r 鏄竴涓洖杞︼紝\t 鏄竴涓按骞冲埗琛ㄧ銆 杩樻敮鎸 \digits锛 杩欓噷 digits 鏄竴涓叓杩涘埗瀛楄妭鏁板硷紝 杩樻敮鎸 \xhexdigits锛岃繖閲岀殑 hexdigits 浠h〃鍗佸叚杩涘埗瀛楄妭鍊笺 锛堜綘鍒涘缓鐨勫瓧鑺傚簭鍒楁槸鍚︽湇鍔″櫒鐨勫瓧绗﹂泦缂栫爜鑳芥帴鍙楃殑姝g‘瀛楃锛屾槸浣犺嚜宸辩殑璐d换銆傦級浠讳綍鍏跺畠璺熷湪鍙嶆枩鏉犲悗闈㈢殑瀛楃閮藉綋鍋氭枃鏈湅寰呫 鍥犳锛岃鍦ㄥ瓧绗︿覆甯搁噺閲屽寘鍚弽鏂滄潬锛屽垯鍐欎袱涓弽鏂滄潬銆

娉ㄦ剰: 铏界劧鐜板湪鐨勬櫘閫氬瓧涓叉敮鎸 C 椋庢牸鐨勫弽鏂滄墰閫冮革紝 灏嗘潵鐗堟湰璁插杩欐牱浣跨敤鍙戝嚭璀﹀憡锛屽苟涓旀渶鍚庡皢璁や负鍙嶆枩鎵涙槸鏍囧噯鍏煎鐨勬枃鏈瓧绗︺傚0鏄庨冮稿鐞嗙殑姣旇緝濂界殑鏂规硶鏄娇鐢ㄩ冮稿瓧涓茶娉曪紝琛ㄧず闇瑕佽繘琛岄冮稿鐞嗐 閫冮稿瓧涓茶娉曟槸閫氳繃鍦ㄥ瓧涓插墠鍐欏瓧姣 E 锛堝ぇ鍐欐垨鑰呭皬鍐欙級鐨勬柟娉曞0鏄庣殑銆傛瘮濡傦紝E'\041'銆傝繖涓柟娉曞皢鍦ㄦ墍鏈夊皢鏉ョ増鏈殑 PostgreSQL 閲岃捣浣滅敤銆

缂栫爜涓洪浂鐨勫瓧绗︿笉鑳藉嚭鐜板湪瀛楃涓插父閲忎腑銆

涓や釜鍙槸閫氳繃鑷冲皯鏈変竴涓崲琛岀鐨勭┖鐧藉垎闅旂殑瀛楃涓插父閲忎細琚繛鎺ュ湪涓璧凤紝骞跺綋鍋氬畠浠槸鍐欐垚涓涓父閲忓鐞嗐 姣斿锛

SELECT 'foo'

'bar';

绛夋晥浜

SELECT 'foobar';



SELECT 'foo' 'bar';

鏄潪娉曠殑璇硶锛岋紙杩欎釜鐣ュ井鏈変簺鎬紓鐨勮涓烘槸 SQL 澹版槑鐨勶紱 PostgreSQL 閬靛惊鏍囧噯銆傦級

4.1.2.2. 缇庡厓绗﹀寘鍥村瓧涓插父閲

灏界澹版槑瀛椾覆甯搁噺鐨勬爣鍑嗘柟娉曢氬父閮藉緢鏂逛究锛屼絾鏄鏋滃瓧涓插寘鍚緢澶氬崟寮曞彿鎴栬呭弽鏂滄潬锛岄偅涔堢悊瑙e瓧涓茬殑鍐呭鍙兘灏变細鍙樺緱寰堣嫤娑╋紝鍥犱负姣忎釜鍗曞紩鍙烽兘瑕佸姞鍊嶃 涓轰簡璁╄繖绉嶅満鍚堜笅鐨勬煡璇㈡洿鍏峰彲璇绘э紝PostgreSQL 鍏佽鍙﹀涓绉嶇О浣"缇庡厓绗﹀寘鍥"鐨勫瓧涓插父閲忓0鏄庡姙娉曘 涓涓氳繃缇庡厓绗﹀寘鍥村0鏄庣殑瀛椾覆甯搁噺鐢变竴涓編鍏冪鍙凤紙$锛夛紝涓涓彲閫夌殑闆朵釜鎴栧涓瓧绗"璁板彿"锛屽彟澶栦竴涓編鍏冪鍙凤紝涓涓粍鎴愬瓧涓插父閲忕殑浠绘剰瀛楃鐨勫簭鍒楋紝涓涓編鍏冪鍙凤紝浠ュ強涓涓拰寮濮嬭繖涓編鍏冪鍖呭洿鐨勮鍙风浉鍚岀殑璁板彿锛屽拰涓涓編鍏冪鍙风粍鎴愩傛瘮濡傦紝涓嬮潰鏄袱涓笉鍚岀殑鏂规硶锛岀敤缇庡厓绗﹀寘鍥村0鏄庝簡鍓嶉潰鐨勪緥瀛愶細

$$Dianne's horse$$

$SomeTag$Dianne's horse$SomeTag$

璇锋敞鎰忥紝鍦ㄧ編鍏冪鍖呭洿鐨勫瓧涓查噷锛屽崟寮曞彿鍙互涓嶇敤閫冮镐娇鐢ㄣ 瀹為檯涓婏紝鍦ㄤ竴涓編鍏冪鍖呭洿鐨勫瓧涓查噷锛屾病鏈変粈涔堝瓧绗﹂渶瑕侀冮革細 瀛椾覆鍐呭鎬绘槸鎸夌収瀛楅潰鍐呭鍐欍傚弽鏂滄潬涓嶆槸鐗规畩鐨勶紝 缇庡厓绗﹁嚜宸变篃涓嶆槸鐗规畩鐨勶紝闄ら潪瀹冧滑鍜屽紑鏍囩鐨勪竴閮ㄥ垎鍖归厤銆

鎴戜滑鍙互閫氳繃鍦ㄤ笉鍚屽祵濂楃骇鍒娇鐢ㄤ笉鍚岀殑缇庡厓绗﹀紩鍙峰瓧涓插父閲忔潵瀹炵幇宓屽銆 鏈甯歌鐨勬槸鍐欏嚱鏁板畾涔夌殑鏃跺欍傛瘮濡傦細

$function$

BEGIN

RETURN ($1 ~ $q$[\t\r\n\v\\]$q$);

END;

$function$

杩欓噷锛屽簭鍒 $q$[\t\r\n\v\\]$q$ 琛ㄧず涓涓編鍏冪鍖呭洿鐨勫瓧涓叉枃鏈 [\t\r\n\v\\]锛 鍦ㄥ嚱鏁颁綋琚 PostgreSQL 鎵ц鐨勬椂鍊欙紝瀹冨皢琚瘑鍒嚭鏉ャ 浣嗘槸鍥犱负杩欎釜搴忓垪涓嶅尮閰嶅灞傜殑缇庡厓绗﹀垎闅旂$function$锛屾墍浠ュ彧瑕佽冭檻浜嗗灞傚瓧涓诧紝瀹冨氨鍙槸甯搁噺閲岄潰鐨勪竴浜涢澶栫殑瀛楃鑰屽凡銆

濡傛灉鏈夋爣绛剧殑璇濓紝涓涓編鍏冪鍖呭洿鐨勫瓧涓查伒寰拰鏃犲紩鍙峰寘鍥寸殑鏍囪瘑绗︾浉鍚岀殑瑙勫垯锛 鍙槸瀹冧笉鑳藉寘鍚編鍏冪銆傛爣绛炬槸澶у皬鍐欑浉鍏崇殑锛屽洜姝 $tag$String content$tag$ 鏄纭殑锛岃 $TAG$String content$tag$ 涓嶅銆

涓涓悗闈㈣窡鐫鍏抽敭瀛楁垨鑰呮爣璇嗙鐨勭編鍏冨寘鍥寸殑瀛椾覆蹇呴』鐢ㄧ┖鐧介殧寮锛 鍚﹀垯缇庡厓绗﹀寘鍥村垎闅旂灏嗕細琚涓哄墠闈㈡爣璇嗙鐨勪竴閮ㄥ垎銆

缇庡厓绗﹀寘鍥翠笉鏄 SQL 鏍囧噯锛屼絾鏄湪鍐欏鏉傜殑瀛椾覆鏂囨湰鐨勬椂鍊欙紝瀹冮氬父姣旀爣鍑嗙殑鍗曞紩鍙疯娉曟洿鏂逛究銆傚挨鍏舵槸鍦ㄥ叾瀹冨父閲忛噷琛ㄧ幇瀛椾覆甯搁噺鐨勬椂鍊欐洿鏈夌敤锛屾瘮濡傜粡甯稿湪杩囩▼鍑芥暟瀹氫箟閲岄潰鐨勩傚鏋滅敤鍗曞紩鍙疯娉曪紝姣忎釜涓婇潰渚嬪瓙閲岀殑鍙嶆枩鏉犻兘蹇呴』鍐欏洓涓紝瀹冧滑鍦ㄤ綔涓哄瓧涓叉枃鏈垎鏋愮殑鏃跺欎細鍑忓皯涓轰袱涓紝鐒跺悗鍦ㄥ嚱鏁版墽琛岀殑鏃跺欏湪鍐呭眰瀛椾覆甯搁噺閲屼細鍐嶆琚В鏋愪负涓涓

4.1.2.3. 浣嶄覆甯搁噺

浣嶄覆甯搁噺鐪嬭捣鏉ュ緢璞″湪寮寮曞彿鍓嶉潰鏈変竴涓 B 锛堝ぇ鍐欐垨灏忓啓锛夌殑鏅氬瓧绗︿覆锛堝畠浠箣闂存病鏈夌┖鐧斤級锛 姣斿 B'1001'銆備綅涓插父閲忛噷鍙互鐢ㄧ殑瀛楃鍙湁 0 鍜 1銆

鍙﹀锛屼綅涓插父閲忓彲浠ョ敤鍗佸叚杩涘埗琛ㄧず娉曞0鏄庯紝鏂规硶鏄娇鐢ㄥ墠缂鐨 X 锛堝ぇ鍐欐垨鑰呭皬鍐欙級锛屾瘮濡傦紝X'1FF'銆 杩欑琛ㄧず娉曠瓑鏁堜簬涓涓瘡涓崄鍏繘鍒朵綅鍥涗釜浜岃繘鍒朵綅鐨勪綅涓插父閲忋

涓ょ褰㈠紡鐨勪綅涓插父閲忛兘鍙互璞℃櫘閫氬瓧涓插父閲忛偅鏍疯法琛岃繛缁 缇庡厓绗﹀寘鍥翠笉鑳界敤浜庝綅涓插父閲忋

4.1.2.4. 鏁板煎父閲

鏁板煎父閲忔帴鍙椾笅鍒楅氱敤鐨勫舰寮忥細

digits

digits.[digits][e[+-]digits]

[digits].digits[e[+-]digits]

digitse[+-]digits

杩欓噷鐨 digits 鏄竴涓垨澶氫釜鍗佽繘鍒朵綅锛0 鍒 9锛夈傚鏋滄湁灏忔暟鐐癸紝閭d箞鑷冲皯鏈変竴浣嶅湪灏忔暟鐐瑰墠闈㈡垨鍚庨潰銆傚鏋滃嚭鐜颁簡鎸囨暟鍒嗛殧绗︼紙e锛夛紝閭d箞鑷冲皯鏈変竴涓綅璺熷湪瀹冨悗闈€傚湪甯搁噺閲屼笉鑳芥湁绌烘牸鎴栬呭叾浠栧瓧绗﹀祵鍏ュ湪鍐呫 璇锋敞鎰忎换浣曞墠瀵煎湴姝e彿鎴栬呰礋鍙峰疄闄呬笂閮戒笉璁や负鏄父閲忕殑涓閮ㄥ垎锛 瀹冩槸鏂藉姞浜庡父閲忕殑涓涓搷浣滅銆

杩欓噷鏄竴浜涘悎娉曠殑鏁板煎父閲忕殑渚嬪瓙锛

42

3.5

4.

.001

5e2

1.925e-3

濡傛灉涓涓暟鍊煎父閲忔棦涓嶅寘鍚皬鏁扮偣锛屼篃涓嶅寘鍚寚鏁版搷浣滅锛 閭d箞濡傛灉瀹冪殑鏁板煎彲浠ユ斁鍦╥nteger绫诲瀷涓紙32浣嶏級锛屽垯璁や负瀹冩槸integer绫诲瀷锛涘鏋滃畠鐨勬暟鍊煎彲浠ユ斁鍦 bigint涓紙64浣嶏級锛屽垯璁や负瀹冩槸 bigint锛 鍚﹀垯璁や负瀹冩槸 numeric绫诲瀷銆傚寘鍚皬鏁扮偣鍜/鎴栨寚鏁版搷浣滅鐨勫父閲忔绘槸琚涓烘槸numeric绫诲瀷銆

缁欎竴涓暟鍊煎父閲忚祴浜堝垵濮嬫暟鎹被鍨嬪彧鏄被鍨嬭В鏋愮畻娉曠殑寮绔 鍦ㄥぇ澶氭暟鎯呭喌涓嬭甯搁噺浼氭牴鎹幆澧冭鑷姩寮哄埗杞崲鎴愭渶鍚堥傜殑绫诲瀷銆傚繀瑕佹椂锛屼綘鍙互閫氳繃寮哄埗绫诲瀷杞崲鎶婁竴涓暟鍊艰В鏋愭垚鐗瑰畾鐨勬暟鎹被鍨嬨傛瘮濡傦紝浣犲彲浠ュ己鍒惰姹傛妸涓涓暟鍊煎綋浣滅被鍨媟eal锛坒loat4锛夋潵鐪嬶紝鏂规硶鏄繖涔堝啓锛

REAL '1.23' -- 瀛椾覆椋庢牸

'1.23'::REAL -- PostgreSQL 锛堝巻鍙插師鍥狅級椋庢牸

杩欎簺瀹為檯涓婂彧鏄笅闈㈣璁虹殑閫氱敤杞崲鐨勭壒渚嬨

4.1.2.5. 鍏跺畠绫诲瀷鐨勫父閲

浠绘剰绫讳技鐨勫父閲忓彲浠ョ敤涓嬪垪琛ㄧず娉曚腑鐨勪换浣曚竴绉嶆潵杈撳叆锛

type 'string'

'string'::type

CAST ( 'string' AS type )

鍦ㄥ瓧涓插父閲忕殑鏂囨湰灏嗕紶閫掔粰閭g鍙 type 鐨勭被鍨嬬殑杈撳叆杞崲杩囩▼銆 缁撴灉鏄繖绉嶇被鍨嬬殑涓涓父閲忋傚鏋滀笉瀛樺湪璇ュ父閲忔墍灞炵被鍨嬬殑姝т箟锛 閭d箞鏄庣‘鐨勭被鍨嬫槧灏勫彲浠ョ渷鐣ワ紙姣斿锛屽綋浣犳妸瀹冪洿鎺ヨ祴浜堜竴涓〃瀛楁鐨勬椂鍊欙級锛 杩欑鎯呭喌涓嬪畠浼氳嚜鍔ㄨ浆鎹€

瀛椾覆甯搁噺鍙互鐢ㄦ櫘閫 SQL 琛ㄧず娉曟垨鑰呯編鍏冪鍖呭洿鏉ヤ功鍐欍

鎴戜滑杩樺彲浠ョ敤鍑芥暟鏍风殑璇硶鏉ュ0鏄庣被鍨嬭浆鎹細

typename ( 'string' )

涓嶈繃骞堕潪鎵鏈夌被鍨嬪悕鍙互杩欐牱浣跨敤锛涘弬闃 Section 4.2.8 鑾峰彇缁嗚妭銆

::锛孋AST()锛屽拰鍑芥暟璋冪敤璇硶涔熷彲浠ョ敤浜庡0鏄庝换鎰忚〃杈惧紡鐨勮繍琛屾椂绫诲瀷杞崲锛 濡 Section 4.2.8 涓璁虹殑閭f牱銆 浣嗘槸 type 'string' 鐨勫舰寮忓彧鑳界敤浜庡0鏄庝竴涓枃鏈父閲忕殑绫诲瀷銆 type 'string' 鐨勫彟澶栦竴涓檺鍒舵槸瀹冧笉鑳界敤浜庢暟缁勭被鍨嬶紱瑕佺敤 :: 鎴栬 CAST() 澹版槑涓涓暟缁勫父閲忕殑绫诲瀷銆

CAST() 璇硶閬靛惊 SQL銆 type 'string' 璇硶鏄爣鍑嗙殑涓涓帹骞匡細SQL 鍙槸缁欏皯鏁板嚑绉嶆暟鎹被鍨嬪0鏄庝簡杩欎釜璇硶锛 浣 PostgreSQL 鍏佽灏嗗叾鐢ㄤ簬鎵鏈夌被鍨嬨傚甫 :: 鐨勮娉曟槸 PostgreSQL 鐨勫巻鍙茬敤娉曪紝鍑芥暟璋冪敤璇硶涔熸槸銆

4.1.3. 鎿嶄綔绗

涓涓搷浣滅鏄渶澶 NAMEDATALEN-1 锛堢己鐪 63 涓瓧绗︼級涓笅鍒楀瓧绗︾殑搴忓垪锛

+ - * / < > = ~ ! @ # % ^ & | ` ?

涓嶈繃锛屽鎿嶄綔绗﹀悕瀛楁湁鍑犱釜闄愬埗锛

-- 鍜 /* 涓嶈兘鍑虹幇鍦ㄦ搷浣滅鍚嶅瓧涓殑浠讳綍鍦版柟锛屽洜涓哄畠浠細琚綋鍋氭敞閲婂紑濮嬪寰呫

澶氬瓧绗︽搷浣滅涓嶈兘浠 + 鎴 - 缁撴潫锛 闄ら潪鍏跺悕瀛楄嚦灏戣繕鍖呭惈涓嬪垪鎿嶄綔绗︿箣涓锛

~ ! @ # % ^ & | ` ?

姣斿锛孈- 鏄厑璁哥殑鎿嶄綔绗﹀悕瀛楋紝 浣 *- 涓嶆槸銆傝繖涓檺鍒跺厑璁 PostgreSQL 鍦ㄤ笉瑕佹眰璁板彿涔嬮棿鏈夌┖鐧界殑鎯呭喌涓嬪垎鏋 SQL 鍏煎鐨勬煡璇€

褰撲綘浣跨敤闈 SQL 鏍囧噯鐨勬搷浣滅鍚嶅瓧鐨勬椂鍊欙紝浣犻氬父闇瑕佺敤绌虹櫧鍒嗛殧鐩搁偦鐨勬搷浣滅浠ラ伩鍏嶆涔夈 姣斿锛屽鏋滀綘瀹氫箟浜嗕竴涓彨 "@" 鐨勫乏鍗曠洰鎿嶄綔绗︼紝閭d箞浣犲氨涓嶈兘鍐 X*@Y锛涜屾槸瑕佸啓鎴 X* @Y 浠ョ‘淇 PostgreSQL 鎶婂畠璇绘垚涓や釜鎿嶄綔绗︼紝鑰屼笉鏄竴涓

4.1.4. 鐗规畩瀛楃

鏈変簺闈炲瓧姣嶆暟瀛楀瓧绗︽湁涓浜涚壒娈婂惈涔夛紝鍥犳涓嶈兘鐢ㄥ仛鎿嶄綔绗︺ 瀹冧滑鐨勭敤娉曠殑缁嗚妭鍙互鍦ㄧ浉搴旂殑鎻忚堪璇硶鍏冪礌鐨勫湴鏂规壘鍒般 鏈妭鍙槸鎻忚堪瀹冧滑鐨勫瓨鍦ㄥ拰姒傛嫭涓涓嬭繖浜涘瓧绗︾殑鐩殑銆

缇庡厓绗﹀彿锛$锛夊悗闈㈣窡鐫鏁板瓧鐢ㄤ簬鍦ㄤ竴涓嚱鏁颁綋瀹氫箟鎴栬呭噯澶囧ソ鐨勮鍙ヤ腑 琛ㄧず鍙傛暟鐨勪綅缃傚湪鍏朵粬鐜閲岀編鍏冪鍙峰彲鑳芥槸涓涓爣璇嗙鍚嶅瓧鎴栬呮槸涓涓編鍏冪鍖呭洿鐨勫瓧涓插父閲忕殑涓閮ㄥ垎銆

鍦嗘嫭寮э紙()锛夌敤浜庡垎缁勫拰寮哄埗浼樺厛绾х殑鏃跺欏惈涔変笌骞冲父涓鏍枫 鏈変簺鍦哄悎閲屽渾鎷姬鏄綔涓轰竴涓壒瀹 SQL 鍛戒护鐨勫浐瀹氳娉曠殑涓閮ㄥ垎瑕佹眰鐨勩

鏂规嫭寮э紙[]锛夌敤浜庨夊彇鏁扮粍鍏冪礌銆 鍙傞槄 Section 8.10 鑾峰彇鏇村淇℃伅銆

閫楀彿锛,鍦ㄤ竴浜涜娉曟瀯閫犻噷鐢ㄤ簬鍒嗛殧涓涓垪琛ㄧ殑鍏冪礌銆

鍒嗗彿锛;锛夌粨鏉熶竴鏉 SQL 鍛戒护銆 瀹冧笉鑳藉嚭鐜板湪涓鏉″懡浠ら噷鐨勪换浣曞湴鏂癸紝闄ら潪寮曞彿鍖呭洿鐨勬潵褰撳仛瀛楃涓插父閲忔垨鑰呮爣璇嗙鐢ㄣ

鍐掑彿 锛:锛夌敤浜庝粠鏁扮粍涓夊彇"鐗囨"銆傦紙鍙傞槄 Section 8.10銆傦級鍦ㄤ竴浜 SQL 鏂硅█閲岋紙姣斿宓屽叆 SQL 锛夛紝 鍐掑彿鐢ㄤ簬鍓嶇紑鍙橀噺鍚嶃

鏄熷彿 锛* 鍦ㄦ煇浜涚幆澧冮噷琛ㄧず涓涓〃琛屾垨鑰呬竴涓鍚堢被鍨嬪肩殑鍏ㄩ儴瀛楁銆 鍦ㄧ敤浣滆仛闆嗗嚱鏁 COUNT 鐨勫弬鏁版椂杩樻湁鐗规畩鍚箟銆

鍙ョ偣 锛.鐢ㄥ湪鏁板瓧甯搁噺閲岋紝骞剁敤浜庡垎闅旀ā寮忥紝琛ㄥ拰瀛楁鍚嶅瓧銆

4.1.5. 娉ㄩ噴

娉ㄩ噴鏄换鎰忎互鍙屽垝绾垮紑澶村苟寤朵几鍒拌灏剧殑浠绘剰瀛楃搴忓垪锛屾瘮濡傦細

-- 杩欐槸鏍囧噯鐨 SQL92 娉ㄩ噴

鍙﹀锛岃繕鍙互浣跨敤 C-椋庢牸鐨勫潡娉ㄩ噴锛

/* 澶氳娉ㄩ噴

* 鍙互宓屽鈭/* 宓屽鐨勫潡娉ㄩ噴 */

*/

杩欓噷娉ㄩ噴浠 /* 寮澶村苟鎵╁睍鍒板搴旂殑 */銆傝繖浜涘潡娉ㄩ噴鍙互宓屽锛屽氨璞 SQL99 閲岃鐨勯偅鏍凤紝 浣嗗拰 C 涓嶄竴鏍凤紝鍥犳鎴戜滑鍙互娉ㄩ噴鎺変竴澶у潡宸茬粡鍖呭惈鍧楁敞閲婄殑浠g爜銆

娉ㄩ噴鍦ㄨ繘涓姝ョ殑璇硶鍒嗘瀽涔嬪墠琚粠杈撳叆娴佸垹闄ゅ苟鐢ㄧ┖鐧戒唬鏇裤

4.1.6. 璇嶆硶浼樺厛绾

Table 4-1 鏄剧ず浜 PostgreSQL 閲岄潰鐨勬搷浣滅鐨勪紭鍏堢骇鍜屽叧鑱旀с 澶у鏁版搷浣滅閮芥湁鐩稿悓鐨勪紭鍏堢骇骞朵笖閮芥槸宸﹀叧鑱旂殑銆傝繖绉嶆儏鍐靛彲鑳戒細鏈変笉閭d箞鐩磋鐨勮涓猴紱姣斿锛屽竷灏旀搷浣滅 < 鍜 > 鍜屽竷灏旀搷浣滅 <= 鍜 >= 涔嬮棿鏈夌潃涓嶅悓鐨勪紭鍏堢骇銆傚悓鏍凤紝褰撲綘鎶婂弻鐩拰鍗曠洰鎿嶄綔绗︾粍鍚堜娇鐢ㄧ殑鏃跺欙紝 鏈夋椂鍊欎篃闇瑕佸姞鍦嗘嫭寮с傛瘮濡

SELECT 5 ! - 6;

浼氳鍒嗘瀽鎴

SELECT 5 ! (- 6);

鍥犱负鍒嗘瀽鍣ㄤ笉鐭ラ亾 ! 瀹氫箟鎴愪簡鍚庣紑鎿嶄綔绗︼紝 鑰屼笉鏄腑缂鎿嶄綔绗︺傗 鐭ラ亾鐨勬椂鍊欏彧鑳芥槸澶櫄浜 鈥 瑕佸湪鏈緥涓幏寰椾綘闇瑕佺殑鐗规э紝浣犺鍐欐垚

SELECT (5 !) - 6;

杩欐槸鎴戜滑涓烘墿灞曟т粯鍑虹殑浠d环銆

Table 4-1. 鎿嶄綔绗︿紭鍏堢骇锛堥掑噺锛

鎿嶄綔绗/鍏冪礌 鍏宠仈鎬 鎻忚堪

. 宸 琛/瀛楁鍚嶅垎闅旂

:: 宸 PostgreSQL-鐗规湁鐨勭被鍨嬭浆鎹㈡搷浣滅

[ ] 宸 鏁扮粍鍏冪礌閫夊垯

- 鍙 鍗曠洰璐熷彿

^ 宸 骞傛搷浣

* / % 宸 涔橈紝闄わ紝妯

+ - 宸 鍔狅紝鍑

IS 绌 IS TRUE, IS FALSE, IS UNKNOWN, IS NULL

ISNULL 绌 娴嬭瘯鏄惁涓虹┖鍊

NOTNULL 绌 娴嬭瘯鏄惁涓洪潪绌哄

锛堜换浣曞叾瀹冪殑锛 宸 鎵鏈夊叾瀹冪殑鏈湴鍜岀敤鎴峰畾涔夋搷浣滅

IN 绌 闆嗗悎鎴愬憳

BETWEEN 绌 鑼冨洿鍖呭惈

OVERLAPS 绌 鏃堕棿闂撮殧閲嶅彔

LIKE ILIKE SIMILAR 绌 瀛楃涓叉ā寮忓尮閰

< > 绌 灏忎簬锛屽ぇ浜

= 鍙 绛変簬锛岃祴鍊

NOT 鍙 閫昏緫鍙

AND 宸 閫昏緫涓

OR 宸 閫昏緫鎴

璇锋敞鎰忔搷浣滅浼樺厛绾т篃閫傜敤浜庡拰涓婇潰鎻愬埌鐨勫悓鍚嶇殑鍐呯疆鎿嶄綔绗︾敤鎴峰畾涔夋搷浣滅銆 姣斿锛屽鏋滀綘涓轰竴浜涘鎴锋暟鎹被鍨嬪畾涔変竴涓 "+" 鎿嶄綔绗︼紝 閭d箞瀹冨拰鍐呯疆鐨 "+" 鎿嶄綔绗︽湁鍚屾牱鐨勪紭鍏堢骇锛屼笉绠′綘骞蹭簡浠涔堛

濡傛灉鍦 OPERATOR 璇硶閲屼娇鐢ㄤ簡妯″紡淇グ鐨勬搷浣滅鍚嶏紝 姣斿

SELECT 3 OPERATOR(pg_catalog.+) 4;

閭d箞 OPERATOR 鏋勯犲氨浼氭湁 Table 4-1 琛ㄩ噷闈负"浠讳綍鍏跺畠"鎿嶄綔绗︽樉绀虹殑缂虹渷浼樺厛绾с 涓嶇浠涔堢壒瀹氱殑鎿嶄綔绗﹀嚭鐜板湪 OPERATOR()閲岋紝閮芥槸杩欐牱銆
SQL璇硶

4.2. 鍊艰〃杈惧紡

鍊艰〃杈惧紡鐢ㄥ湪鍚勭璇硶鐜涓紝姣斿鍦 SELECT 鍛戒护鐨勭洰鏍囧垪琛ㄤ腑锛屽湪 INSERT 鎴 UPDATE 涓敤鍋氭柊鐨勫垪鍊硷紝鎴栬呭湪璁稿鍛戒护涓殑鎼滅储鏉′欢涓娇鐢ㄣ 鎴戜滑鏈夋椂鍊欐妸鍊艰〃杈惧紡鐨勭粨鏋滃彨鍋氭爣閲忥紝浠ヤ究涓庝竴涓〃琛ㄨ揪寮忕殑缁撴灉鐩稿尯鍒紙鏄竴涓〃锛夈傚洜姝ゅ艰〃杈惧紡涔熷彨鍋氭爣閲忚〃杈惧紡锛堟垨鑰呮洿绠鍗曠殑琛ㄨ揪寮忥級銆傝〃杈惧紡璇硶鍏佽瀵规潵鑷熀鏈儴鍒嗙殑鏁板艰繘琛岀畻鏈紝閫昏緫锛岄泦鍚堬紝鍜屽叾瀹冩搷浣滅殑杩愮畻銆

鍊艰〃杈惧紡鏄笅鍒楀唴瀹逛箣涓锛

涓涓父閲忔垨鑰呮枃鏈笺

涓涓瓧娈靛紩鐢ㄣ

涓涓綅缃弬鏁板紩鐢紝鍦ㄥ嚱鏁板0鏄庝綋涓

涓涓搷浣滅璋冪敤銆

涓涓嚱鏁拌皟鐢ㄣ

涓涓仛闆嗚〃杈惧紡銆

涓涓被鍨嬭浆鎹€

涓涓爣閲忓瓙鏌ヨ銆

涓涓鏋勯犲櫒銆

鍙﹀涓涓湪鍦嗘嫭寮ч噷闈㈢殑鍊艰〃杈惧紡锛屽彲浠ョ敤浜庡瓙琛ㄨ揪寮忓垎缁勫拰瑕嗙洊浼樺厛绾с

闄や簡杩欎釜鍒楄〃浠ュ锛岃繕鏈夎澶氭瀯閫犲彲浠ュ綊绫讳负琛ㄨ揪寮忥紝浣嗘槸涓嶉伒寰换浣曢氱敤鐨勮娉曡鍒欍 瀹冧滑閫氬父鏈夊嚱鏁版垨鎿嶄綔绗︾殑璇箟锛屽苟涓斿湪 Chapter 9 閲屽悎閫傜殑浣嶇疆鎻忚堪銆 涓涓緥瀛愭槸 IS NULL 瀛愬彞銆

鎴戜滑宸茬粡鍦 Section 4.1.2 閲屾湁璁ㄨ杩囩殑鍐呭浜嗐備笅闈㈢殑鑺傝璁哄墿涓嬬殑閫夐」銆

4.2.1. 瀛楁寮曠敤

涓涓瓧娈靛彲浠ョ敤涓嬮潰褰㈠紡鐨勫紩鐢細

correlation.columnname

correlation 鏄竴涓〃鐨勫悕瀛楋紙鍙兘鏈夋ā寮忎慨楗帮級锛 鎴栬呮槸鐢‵ROM瀛愬彞杩欐牱鐨勬柟娉曞畾涔夌殑琛ㄧ殑鍒悕锛屾垨鑰呮槸鍏抽敭瀛 NEW 鎴 OLD銆 锛圢EW鍜 OLD鍙兘鍑虹幇鍦ㄤ竴鏉℃敼鍐欒鍒欎腑锛 鑰屽叾浠栫浉鍏崇殑鍚嶅瓧鍙互鐢ㄤ簬浠绘剰 SQL 璇彞涓傦級濡傛灉鍦ㄥ綋鍓嶆煡璇腑鎵浣跨敤鐨勬墍鏈夎〃涓紝璇ュ瓧娈靛悕瀛楁槸鍞竴鐨勶紝 閭d箞杩欎釜鐩稿叧鍚嶅瓧鍜屽垎闅旂敤鐨勭偣灏卞彲浠ョ渷鐣ャ 锛堝張瑙 Chapter 7銆傦級

4.2.2. 浣嶇疆鍙傛暟

浣嶇疆鍙傛暟寮曠敤鐢ㄤ簬鏍囪瘑浠庡閮ㄧ粰涓涓 SQL 璇彞鐨勪竴涓弬鏁般 鍙傛暟鐢ㄤ簬 SQL 鍑芥暟瀹氫箟璇彞鍜屽噯澶囧ソ鐨勬煡璇€ 鏈変簺瀹㈡埛绔簱杩樻敮鎸佸湪 SQL 鍛戒护瀛椾覆澶栬竟澹版槑鏁版嵁鍊硷紝杩欑鎯呭喌涓嬪弬鏁扮敤浜庡紩鐢 SQL 瀛椾覆琛屽鐨勬暟鎹 涓涓弬鏁扮殑褰㈠紡濡備笅锛
$number

姣斿锛岀湅鐪嬩竴涓嚱鏁 dept 鐨勫畾涔夛紝 濡備笅

CREATE FUNCTION dept(text) RETURNS dept

AS $$ SELECT * FROM dept WHERE name = $1 $$

LANGUAGE SQL;

鍦ㄥ嚱鏁拌璋冪敤鐨勬椂鍊欒繖閲岀殑 $1 灏嗗紩鐢ㄧ涓涓嚱鏁扮殑鍙傛暟銆

4.2.3. 涓嬫爣

濡傛灉涓涓〃杈惧紡鐢熸垚涓涓暟缁勭被鍨嬬殑鏁板硷紝閭d箞鎴戜滑鍙互閫氳繃鍐欎笅闈㈣繖鏍风殑琛ㄨ揪寮忔潵澹版槑鏁扮粍鍊肩殑鍏冪礌

expression[subscript]

濡傛灉鏄涓浉閭荤殑鍏冪礌锛堜竴涓"鏁扮粍鐗囨柇"锛夊彲浠ョ敤涓嬮潰鐨勬柟娉曟娊鍙

expression[lower_subscript:upper_subscript]

锛堝湪杩欓噷锛屾柟鎷姬 [ ] 鐨勬剰鎬濇槸鎸夌収瀛楅潰鏂囨湰鐨勬柟寮忓嚭鐜般傦級 姣忎釜subscript鑷繁閮芥槸涓涓〃杈惧紡锛屽畠蹇呴』鐢熸垚涓涓暣鏁板笺

閫氬父锛屾暟缁 expression 蹇呴』鐢ㄥ渾鎷姬鍖呭洿锛 浣嗗鏋滆杩涜鑴氭爣璁$畻鐨勮〃杈惧紡鍙槸涓涓瓧娈靛紩鐢ㄦ垨鑰呬竴涓綅缃弬鏁帮紝閭d箞鍦嗘嫭寮у彲浠ョ渷鐣ャ 鍚屾牱锛屽鏋滄簮鏁扮粍鏄缁寸殑锛岄偅涔堝涓剼鏍囧彲浠ヨ繛鎺ュ湪涓璧枫傛瘮濡傦紝

mytable.arraycolumn

mytable.two_d_column[17][34]

$1[10:42]

(arrayfunction(a,b))[42]

鏈鍚庝竴涓緥瀛愰噷鐨勫渾鎷姬鏄繀椤荤殑銆傚弬闃 Section 8.10 鑾峰彇鏈夊叧鏁扮粍鐨勬洿澶氫俊鎭

4.2.4. 瀛楁閫夋嫨

濡傛灉涓涓〃杈惧紡鐢熸垚涓涓鍚堢被鍨嬶紙琛岀被鍨嬶級锛岄偅涔堢敤涓嬮潰鐨勬柟娉曞彲浠ユ娊鍙栦竴涓寚瀹氱殑瀛楁

expression.fieldname

閫氬父锛岃 expression 蹇呴』鐢ㄥ渾鎷姬鍖呭洿锛 浣嗘槸濡傛灉瑕侀夊彇鐨勮〃杈惧紡鍙槸涓涓〃寮曠敤鎴栬呬綅缃弬鏁帮紝鍙互鐪佺暐鍦嗘嫭寮с 姣斿

mytable.mycolumn

$1.somecolumn

(rowfunction(a,b)).col3

锛堝洜姝わ紝涓涓叏绉扮殑瀛楁寮曠敤瀹為檯涓婂彧鏄竴涓瓧娈甸夋嫨璇硶鐨勭壒渚嬨傦級

4.2.5. 鎿嶄綔绗﹁皟鐢

鎿嶄綔绗﹁皟鐢ㄦ湁涓夌璇硶鈭

expression operator expression (鍙岀洰涓紑鎿嶄綔绗)

operator expression (鍗曠洰鍓嶇紑鎿嶄綔绗)

expression operator (鍗曠洰鍚庣紑鎿嶄綔绗)

杩欓噷鐨 operator 璁板彿閬靛惊璇硶瑙勫垯锛 Section 4.1.3锛 鎴栬呮槸璁板彿锛欰ND锛 OR锛屽拰 NOT 涔嬩竴銆 鎴栬呮槸涓涓淇グ鐨勬搷浣滅鍚

OPERATOR(schema.operatorname)

鍏蜂綋瀛樺湪鍝釜鎿嶄綔绗︿互鍙婂畠浠槸鍗曠洰杩樻槸鍙岀洰鍙栧喅浜庣郴缁熸垨鐢ㄦ埛瀹氫箟浜嗕粈涔堟搷浣滅銆侰hapter 9 鎻忚堪浜嗗唴缃殑鎿嶄綔绗︺

4.2.6. 鍑芥暟璋冪敤

鍑芥暟璋冪敤鐨勮娉曟槸鍚堟硶鍑芥暟鍚嶅瓧锛堝彲鑳芥湁妯″紡鍚嶄慨楗帮級锛 鍚庨潰璺熺潃鍦ㄥ渾鎷姬閲岀殑瀹冪殑鍙傛暟鍒楄〃锛

function ([expression [, expression ... ]] )

姣斿锛屼笅闈㈢殑浠g爜璁$畻 2 鐨勫钩鏂规牴锛

sqrt(2)

鍐呯疆鍑芥暟鐨勫垪琛ㄥ湪 Chapter 9 閲屻 鍏跺畠鍑芥暟鍙互鐢辩敤鎴锋坊鍔犮

4.2.7. 鑱氶泦琛ㄨ揪寮

涓涓仛闆嗚〃杈惧紡浠h〃涓涓仛闆嗗嚱鏁板涓涓煡璇㈤夊嚭鐨勮鐨勫鐞嗐 涓涓仛闆嗗嚱鏁版妸澶氫釜杈撳叆缂╁噺涓轰竴涓緭鍑哄硷紝 姣斿缁欒緭鍏ユ眰鍜屾垨骞冲潎銆備竴涓仛闆嗚〃杈惧紡鐨勮娉曟槸涓嬪垪涔嬩竴锛

aggregate_name (expression)

aggregate_name (ALL expression)

aggregate_name (DISTINCT expression)

aggregate_name ( * )

杩欓噷 aggregate_name 鏄墠闈㈠畾涔夌殑鑱氶泦锛岋紙鍙兘鏄叏绉帮級锛 鑰 expression 鏄竴涓湰韬笉鍖呭惈鑱氶泦琛ㄨ揪寮忕殑浠绘剰鍊艰〃杈惧紡銆

绗竴绉嶅舰寮忕殑鑱氶泦琛ㄨ揪寮忎负鎵鏈夎〃杈惧紡鐢熸垚闈炵┖鍊肩殑杈撳叆琛岃皟鐢ㄨ仛闆嗐 锛堝疄闄呬笂锛屾槸鍚﹀拷鐣ョ┖鍊肩敱鑱氶泦鍑芥暟鍐冲畾 鈥 浣嗘槸鎵鏈夋爣鍑嗙殑鑱氶泦鍑芥暟閮藉拷鐣ュ畠浠傦級 绗簩绉嶅舰寮忓拰绗竴绉嶄竴鏍凤紝鍥犱负 ALL 鏄己鐪佸笺傜涓夌褰㈠紡涓烘墍鏈夎緭鍏ヨ閲屾壘鍒拌〃杈惧紡鐨勬墍鏈夊敮涓鐨勯潪绌哄艰皟鐢ㄨ仛闆嗐 鏈鍚庝竴绉嶅舰寮忎负姣忎釜杈撳叆琛岋紙涓嶇鏄┖杩樻槸闈炵┖锛夎皟鐢ㄤ竴娆¤仛闆嗭紱鍥犱负娌℃湁澹版槑鐗瑰畾鐨勮緭鍏ュ笺傞氬父瀹冨彧鏄 count() 鑱氶泦鍑芥暟鏈夌敤銆

姣斿锛宑ount(*) 鐢熸垚杈撳叆琛岀殑鎬绘暟锛 count(f1) 鐢熸垚 f1 涓洪潪绌虹殑杈撳叆琛屾暟锛 count(distinct f1) 鐢熸垚 f1 鍞竴闈炵┖鐨勮鏁般

棰勫畾涔夌殑鑱氶泦鍑芥暟鍦 Section 9.15 閲屾弿杩般 鍏跺畠鑱氶泦鍑芥暟鍙互鐢辩敤鎴峰鍔犮

涓涓仛闆嗚〃杈惧紡鍙兘鍦 SELECT 鍛戒护鐨勭粨鏋滃垪琛ㄦ垨鑰 HAVING 瀛愬彞閲屽嚭鐜般 绂佹鍦ㄥ叾瀹冨瓙鍙ラ噷鍑虹幇锛屾瘮濡 WHERE 閲岄潰锛屽洜涓鸿繖浜涘瓙鍙ラ昏緫涓婂湪鐢熸垚鑱氶泦缁撴灉涔嬪墠璁$畻銆

濡傛灉涓涓仛闆嗚〃杈惧紡鍑虹幇鍦ㄤ竴涓瓙鏌ヨ閲岋紙鍙傞槄 Section 4.2.9 鍜 Section 9.16锛夛紝鑱氶泦閫氬父鏄湪瀛愭煡璇㈢殑琛屼笂杩涜璁$畻銆備絾鏄鏋滆仛闆嗙殑鍙傛暟鍙寘鍚灞傛煡璇㈢殑鍙橀噺鍒欐湁涓涓緥澶栵細杩欎釜鑱氶泦浼氬睘浜庣浠栨渶杩戠殑澶栧眰鏌ヨ锛屽苟涓斿湪璇ユ煡璇笂杩涜璁$畻銆傝鑱氶泦琛ㄨ揪寮忔暣浣撲笂灞炰簬瀹冨嚭鐜扮殑瀛愭煡璇㈠澶栧眰鏌ヨ鐨勫紩鐢紝鍏朵綔鐢ㄧ浉褰撲簬瀛愭煡璇换浣曚竴娆¤绠椾腑鐨勪竴涓父閲忋 杩欎釜鑱氶泦琛ㄨ揪寮忕殑鏈夊叧鍙兘鍑虹幇鍦ㄧ粨鏋滃垪鎴栬 HAVING 瀛愬彞鐨勯檺鍒堕傜敤浜庤仛闆嗘墍灞炵殑鏌ヨ灞傘

4.2.8. 绫诲瀷杞崲

涓涓被鍨嬭浆鎹㈠0鏄庝竴涓粠涓绉嶆暟鎹被鍨嬪埌鍙﹀涓绉嶆暟鎹被鍨嬬殑杞崲銆 PostgreSQL 鎺ュ彈涓ょ绛夋晥鐨勭被鍨嬭浆鎹㈣娉曪細

CAST ( expression AS type )

expression::type

CAST 璇硶閬靛惊 SQL锛:: 鐨勮娉曟槸 PostgreSQL 浼犵粺鐢ㄦ硶銆

濡傛灉瀵逛竴涓凡鐭ョ被鍨嬬殑鍊艰〃杈惧紡搴旂敤杞崲锛屽畠浠h〃涓涓繍琛屾椂绫诲瀷杞崲銆 鍙湁鍦ㄥ畾涔変簡鍚堥傜殑绫诲瀷杞崲鎿嶄綔鐨勬儏鍐典笅锛岃杞崲鎵嶈兘鎴愬姛銆傝娉ㄦ剰杩欎竴鐐瑰拰鐢ㄤ簬甯搁噺鐨勮浆鎹㈢暐鏈夊尯鍒紝濡 Section 4.1.2.5 鎵绀恒備竴涓簲鐢ㄤ簬鏌愪釜鏈慨楗扮殑瀛椾覆鏂囨湰鐨勮浆鎹㈣〃绀虹粰涓涓瓧涓叉枃鏈暟鍊艰祴浜堜竴涓垵濮嬪寲绫诲瀷锛屽洜姝ゅ畠瀵逛簬浠讳綍绫诲瀷閮戒細鎴愬姛锛堝鏋滃瓧涓叉枃鏈殑鍐呭绗﹀悎璇ユ暟鎹被鍨嬬殑杈撳叆璇硶鎺ュ彈銆傦級

濡傛灉瀵逛簬涓涓艰〃杈惧紡鐢熸垚鐨勬暟鍊煎鏌愮被鍨嬭岃█涓嶅瓨鍦ㄦ贩娣嗙殑鎯呭喌锛 閭d箞鎴戜滑鍙互鐪佺暐鏄庣‘鐨勭被鍨嬭浆鎹紙姣斿锛屽湪缁欎竴涓〃瀛楁璧嬪肩殑鏃跺欙級锛涘湪杩欐牱鐨勬儏鍐典笅锛岀郴缁熷皢鑷姩闄勫姞涓涓被鍨嬭浆鎹€ 涓嶈繃锛岃嚜鍔ㄨ浆鎹㈠彧閫傜敤浜庨偅浜涚郴缁熻〃涓爣璁扮潃 "OK to apply implicitly" 鐨勮浆鎹㈠嚱鏁般 鍏跺畠杞崲鍑芥暟蹇呴』鐢ㄦ槑纭殑杞崲璇硶璋冪敤銆 杩欎簺闄愬埗鏄负浜嗛伩鍏嶄竴浜涙紓鐨勮浆鎹㈣搴旂敤銆
鎴戜滑涔熷彲浠ョ敤鍑芥暟鏍风殑璇硶澹版槑涓涓被鍨嬭浆鎹細

typename ( expression )

涓嶈繃锛岃繖涓柟娉曞彧鑳界敤浜庨偅浜涘悕瀛楀悓鏃朵篃鏄湁鏁堝嚱鏁板悕瀛楃殑绫诲瀷銆 姣斿锛宒ouble precision 灏变笉鑳借繖涔堢敤锛 浣嗘槸绛夋晥鐨 float8 鍙互銆傚悓鏍凤紝interval锛 time锛屽拰 timestamp 濡傛灉鍔犱簡鍙屽紩鍙蜂篃鍙兘杩欎箞鐢紝鍥犱负瀛樺湪璇硶鍐茬獊銆傚洜姝わ紝鍑芥暟鏍风殑绫诲瀷杞崲浼氬鑷翠笉涓鑷达紝 鎵浠ュ彲鑳藉簲璇ラ伩鍏嶅湪鏂板簲鐢ㄤ腑杩欎箞鐢ㄣ傦紙鍑芥暟鏍疯娉曞疄闄呬笂灏变技涔庝竴涓嚱鏁拌皟鐢ㄣ傚鏋滀娇鐢ㄤ袱绉嶆爣鍑嗚浆鎹㈣娉曞仛杩愯鏃惰浆鎹紝 閭d箞瀹冨皢鍦ㄥ唴閮ㄨ皟鐢ㄤ竴涓凡娉ㄥ唽寰楀嚱鏁版墽琛岃浆鎹€傞氬父锛岃繖绉嶈浆鎹㈠嚱鏁板拰瀹冧滑寰楄緭鍑虹被鍨嬪悓鍚嶏紝浣嗘槸杩欎釜瑕佺偣鍙笉鏄偅浜涘彲浠ョЩ妞嶇殑绋嬪簭鍙互渚濊禆鐨勪笢瑗裤傦級

4.2.9. 鏍囬噺瀛愭煡璇

涓涓爣閲忓瓙鏌ヨ鏄竴涓斁鍦ㄥ渾鎷姬閲岀殑鏅 SELECT鏌ヨ锛 瀹冨彧杩斿洖鍙湁涓涓瓧娈电殑涓琛屻傦紙鍙傞槄 Chapter 7 鑾峰彇鏈夊叧鍐欐煡璇㈢殑淇℃伅銆傦級 璇 SELECT 灏嗚鎵ц锛 鑰屽叾鍗曚釜杩斿洖鍊煎皢鍦ㄥ懆鍥寸殑鍊艰〃杈惧紡涓娇鐢ㄣ傛妸涓涓繑鍥炶秴杩囦竴琛屾垨鑰呰秴杩囦竴鍒楃殑鏌ヨ鐢ㄥ仛鏍囬噺鏌ヨ鏄敊璇殑銆 锛堜笉杩囷紝鍦ㄧ壒瀹氱殑鎵ц涓紝瀛愭煡璇笉杩斿洖琛屽垯涓嶇畻閿欒锛涙爣閲忕粨鏋滆涓烘槸NULL銆傦級璇ュ瓙鏌ヨ鍙互寮曠敤鍛ㄥ洿鏌ヨ鐨勫彉閲忥紝閭d簺鍙橀噺涔熸槸鍦ㄨ绠椾换鎰忓瓙鏌ヨ鐨勬椂鍊欏綋鍋氬父閲忎娇鐢ㄧ殑銆 鍙堣 Section 9.16銆

姣斿锛屼笅闈㈢殑鏌ヨ鎵惧嚭姣忎釜宸炰腑鐨勬渶澶т汉鍙f暟閲忕殑鍩庡競锛

SELECT name, (SELECT max(pop) FROM cities WHERE cities.state = states.name)

FROM states;

4.2.10. 鏁扮粍鏋勯犲櫒

涓涓暟缁勬瀯閫犲櫒鏄竴涓〃杈惧紡锛屽畠浠庡畠鐨勬垚鍛樺厓绱犱笂鏋勯犱竴涓暟缁勫笺 涓涓畝鍗曠殑鏁扮粍鏋勯犲櫒鐢卞叧閿瓧 ARRAY锛屼竴涓乏鏂规嫭寮 [锛 涓涓垨澶氫釜琛ㄨ揪寮忥紙鐢ㄩ楀彿鍒嗛殧锛夎〃绀烘暟缁勫厓绱犲硷紝浠ュ強鏈鍚庝竴涓彸鏂规嫭寮 ]銆 姣斿

SELECT ARRAY[1,2,3+4];

array

---------

{1,2,7}

(1 row)

鏁扮粍鍏冪礌绫诲瀷鏄垚鍛樿〃杈惧紡鐨勫叕鍏辩被鍨嬶紝浣跨敤鍜 UNION 鎴 CASE 鏋勯犱竴鏍风殑瑙勫垯鍐冲畾銆 锛堝弬闃 Section 10.5锛夈

澶氱淮鏁扮粍鍊煎彲浠ラ氳繃宓屽鏁扮粍鏋勯犲櫒鐨勬柟娉曟潵鍒朵綔銆 鍦ㄥ唴灞傛瀯閫犲櫒閲岋紝鍏抽敭瀛 ARRAY 鍙互鐪佺暐銆傛瘮濡傦紝涓嬮潰鐨勪袱鍙ョ敓鎴愬悓鏍风殑缁撴灉锛

SELECT ARRAY[ARRAY[1,2], ARRAY[3,4]];

array

---------------

{{1,2},{3,4}}

(1 row)

SELECT ARRAY[[1,2],[3,4]];

array

---------------

{{1,2},{3,4}}

(1 row)

鍥犱负澶氱淮鏁扮粍蹇呴』鏄柟褰紝鍚屽眰鐨勫唴灞傛瀯閫犲櫒蹇呴』鐢熸垚鍚岀淮鐨勫瓙鏁扮粍銆

澶氱淮鏁扮粍鏋勯犲櫒鍏冪礌鍙互鏄换浣曠敓鎴愬悎閫傛暟缁勭殑涓滆タ锛岃屼笉浠呬粎鏄竴涓瓙 ARRAY 鏋勯犮 姣斿锛

CREATE TABLE arr(f1 int[], f2 int[]);

INSERT INTO arr VALUES (ARRAY[[1,2],[3,4]], ARRAY[[5,6],[7,8]]);

SELECT ARRAY[f1, f2, '{{9,10},{11,12}}'::int[]] FROM arr;

array

------------------------------------------------

{{{1,2},{3,4}},{{5,6},{7,8}},{{9,10},{11,12}}}

(1 row)

鎴戜滑涔熷彲浠ヤ粠涓涓瓙鏌ヨ鐨勭粨鏋滀腑鏋勯犱竴涓暟缁勩傚湪杩欑褰㈠紡涓嬶紝 鏁扮粍鏋勯犲櫒鏄敤鍏抽敭瀛 ARRAY 鍚庨潰璺熺潃涓涓敤鍦嗘嫭寮э紙涓嶆槸鏂规嫭寮э級鍖呭洿鐨勫瓙鏌ヨ銆 姣斿锛

SELECT ARRAY(SELECT oid FROM pg_proc WHERE proname LIKE 'bytea%');

?column?

-------------------------------------------------------------

{2011,1954,1948,1952,1951,1244,1950,2005,1949,1953,2006,31}

(1 row)

瀛愭煡璇㈠繀椤昏繑鍥炰竴涓瓧娈点傜敓鎴愮殑涓缁存暟缁勫皢涓哄瓙鏌ヨ閲屾瘡琛岀粨鏋滅敓鎴愪竴涓厓绱狅紝 鍏冪礌绫诲瀷鍖归厤瀛愭煡璇㈢殑杈撳嚭瀛楁銆

鐢 ARRAY 寤虹珛鐨勬暟缁勫肩殑鑴氭爣鎬绘槸浠庝竴寮濮嬨 鏈夊叧鏁扮粍鐨勬洿澶氫俊鎭紝鍙傞槄 Section 8.10銆

4.2.11. 琛屾瀯閫

涓涓鏋勯犲櫒鏄竴涓粠鎻愪緵缁欏畠鐨勬垚鍛樺瓧娈垫暟鍊间腑鍒朵綔琛屾暟鍊硷紙涔熷彨澶嶅悎绫诲瀷鍊硷級鐨勮〃杈惧紡銆 涓涓鏋勯犲櫒鐢卞叧閿瓧 ROW锛屼竴涓乏鍦嗘嫭寮э紝 闆朵釜鎴栬呭涓敤鍋氳瀛楁鍊肩殑琛ㄨ揪寮忥紙鐢ㄩ楀彿鍒嗛殧锛夛紝浠ュ強鏈鍚庝竴涓彸鍦嗘嫭寮с傛瘮濡傦紝

SELECT ROW(1,2.5,'this is a test');

濡傛灉鍦ㄥ垪琛ㄩ噷鏈夊涓〃杈惧紡锛岄偅涔堝叧閿瓧 ROW 鏄彲閫夌殑銆

缂虹渷鏃讹紝ROW 琛ㄨ揪寮忓垱寤虹殑鍊兼槸涓涓尶鍚嶇殑璁板綍绫诲瀷銆傚鏋滃繀瑕侊紝浣犲彲浠ユ妸瀹冭浆鎹㈡垚涓涓懡鍚嶇殑澶嶅悎绫诲瀷 鈥 鏃㈠彲浠ユ槸涓涓〃鐨勮绫诲瀷锛屼篃鍙互鏄竴涓敤 CREATE TYPE AS 鍒涘缓鐨勫鍚堢被鍨嬨 鍙兘浼氶渶瑕佷竴涓槑纭殑杞崲浠ラ伩鍏嶆涔夈傛瘮濡傦細

CREATE TABLE mytable(f1 int, f2 float, f3 text);

CREATE FUNCTION getf1(mytable) RETURNS int AS 'SELECT $1.f1' LANGUAGE SQL;

-- 鍥犱负鍙湁涓涓 getf1() 瀛樺湪锛屾墍浠ヤ笉闇瑕佺被鍨嬭浆鎹

SELECT getf1(ROW(1,2.5,'this is a test'));

getf1

------
1

(1 row)

CREATE TYPE myrowtype AS (f1 int, f2 text, f3 numeric);

CREATE FUNCTION getf1(myrowtype) RETURNS int AS 'SELECT $1.f1' LANGUAGE SQL;

-- 鐜板湪鎴戜滑闇瑕佺被鍨嬭浆鎹互琛ㄦ槑璋冪敤鍝釜鍑芥暟锛

SELECT getf1(ROW(1,2.5,'this is a test'));

ERROR: function getf1(record) is not unique

SELECT getf1(ROW(1,2.5,'this is a test')::mytable);

getf1

-------

1

(1 row)

SELECT getf1(CAST(ROW(11,'this is a test',2.5) AS myrowtype));

getf1

-------

11

(1 row)

琛屾瀯閫犲櫒鍙互鐢ㄤ簬鍒朵綔瀛樺偍鍦ㄥ鍚堢被鍨嬭〃瀛楁閲岄潰鐨勫鍚堢被鍨嬪硷紝 鎴栬呮槸浼犻掔粰涓涓帴鍙楀鍚堢被鍨嬪弬鏁扮殑鍑芥暟銆傝繕鏈夛紝鎴戜滑涔熷彲浠ユ瘮杈冧袱涓鏁板兼垨鑰呯敤 IS NULL 鎴 IS NOT NULL 娴嬭瘯涓涓鏁板硷紝姣斿

SELECT ROW(1,2.5,'this is a test') = ROW(1, 3, 'not the same');

SELECT ROW(a, b, c) IS NOT NULL FROM table;

鏇村鐨勭粏鑺傦紝璇峰弬闃 Section 9.17銆 琛屾瀯閫犺繕鍙互鐢ㄤ簬杩炴帴瀛愭煡璇紝杩欎簺鍦 Section 9.16 閲岄潰鏈夎缁嗚璁恒

4.2.12. 琛ㄨ揪寮忚绠楄鍒

瀛愯〃杈惧紡鐨勮绠楅『搴忔槸娌℃湁瀹氫箟鐨勩傜壒鍒鎸囧嚭鐨勬槸锛 涓涓搷浣滅鎴栬呭嚱鏁扮殑杈撳叆骞朵笉涓瀹氭槸鎸夌収浠庡乏鍚戝彸鐨勯『搴忔垨鑰呬互鏌愮鐗瑰畾鐨勯『搴忚繘琛岃绠楃殑銆

鍙﹀锛屽鏋滀竴涓〃杈惧紡鐨勭粨鏋滃彲浠ラ氳繃鍙垽鏂畠鐨勪竴閮ㄥ垎灏卞彲浠ュ緱鍒帮紝 閭d箞鍏跺畠瀛愯〃杈惧紡灏卞彲浠ュ畬鍏ㄤ笉璁$畻浜嗐傛瘮濡傦紝濡傛灉鎴戜滑杩欎箞鍐

SELECT true OR somefunc();

閭d箞 somefunc() 灏憋紙鍙兘锛夋牴鏈笉浼氳璋冪敤銆 濡傛灉鎴戜滑鍐欎笅闈㈢殑锛屼篃鍙兘浼氭槸杩欐牱

SELECT somefunc() OR true;

璇锋敞鎰忚繖閲屽拰鏌愪簺缂栫▼璇█閲岀殑浠庡乏鍚戝彸"鐭矾"鏄笉涓鏍风殑銆

鍥犳锛屾嬁閭d簺鏈夊壇浣滅敤鐨勫嚱鏁颁綔涓哄鏉傝〃杈惧紡鐨勪竴閮ㄥ垎鏄笉鏄庢櫤鐨勯夋嫨銆 鍦 WHERE 鍜 HAVING 瀛愬彞閲岄潰渚濊禆鍓綔鐢ㄦ垨鑰呮槸璁$畻椤哄簭鏄壒鍒嵄闄╃殑锛 鍥犱负杩欎簺瀛愬彞閮芥槸浣滀负鐢熸垚涓涓墽琛岃鍒掔殑涓閮ㄥ垎杩涜浜嗗ぇ閲忕殑鍐嶅鐞嗐傚湪杩欎簺瀛愬彞閲岀殑甯冨皵琛ㄨ揪寮忥紙AND/OR/NOT 鐨勭粍鍚堬級鍙互浠ュ竷灏斾唬鏁拌繍绠楀緥鍏佽鐨勪换鎰忔柟寮忚繘琛岃瘑鍒

濡傛灉寮哄埗璁$畻椤哄簭闈炲父閲嶈锛岄偅涔堝彲浠ヤ娇鐢 CASE 鏋勯狅紙鍙傞槄 Section 9.13锛夈 姣斿锛屼笅闈㈡槸涓绉嶈鍥鹃伩鍏嶅湪 WHERE 瀛愬彞閲岃闆堕櫎鐨勪笉鍙俊鐨勬柟娉曪細

SELECT ... WHERE x <> 0 AND y/x > 1.5;

浣嗘槸涓嬮潰杩欐牱鐨勬槸瀹夊叏鐨勶細

SELECT ... WHERE CASE WHEN x <> 0 THEN y/x > 1.5 ELSE false END;

鐢ㄨ繖绉嶉鏍肩殑 CASE 鏋勯犱細闃绘浼樺寲锛屽洜姝ゅ簲璇ュ彧鍦ㄥ繀瑕佺殑鏃跺欎娇鐢ㄣ 锛堝湪杩欎釜鐗规畩鐨勪緥瀛愰噷锛屾鏃犵枒闂啓鎴 y > 1.5*x 鏇村ソ銆傦級
鎵撳嵃 | 鏀惰棌姝ら〉 |  鎺ㄨ崘缁欏ソ鍙 | 涓炬姤
涓婁竴绡 涓嬩竴绡
 

璇勫垎锛0

鍙戣〃璇勮
鏌ョ湅鍏ㄩ儴鍥炲銆愬凡鏈0浣嶇綉鍙嬪彂琛ㄤ簡鐪嬫硶銆