<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-30  評(píng)論-123  文章-0  trackbacks-0
    接上文...

    三、多數(shù)據(jù)庫(kù)的考慮

    1.??????? 字符串連接必須用“||”符號(hào),不使用“+”。注意:在Oracle中一個(gè)null值與非null值連接,結(jié)果為非null值,在DB2SqlServer中相反。使用nvl對(duì)null轉(zhuǎn)換為’’。

    2.??????? 通配符不能使用‘[a-c]%’這種形式,應(yīng)寫成如:select * from table_name where col1 like ‘[a]%’ OR col1 like ‘[b]%’ OR col1 like ‘[c]%’

    3.??????? 在對(duì)char類型比較時(shí),要對(duì)列加上rtrim()函數(shù),否則在Oracle中不會(huì)得到正確結(jié)果。例如若test表中的字段f1的長(zhǎng)度為10,內(nèi)有一個(gè)值為’aa’,的紀(jì)錄,則語(yǔ)句select len(f1) from test;SqlServer的執(zhí)行結(jié)果為2,在Oracle的執(zhí)行結(jié)果為10

    4.???????? Case when語(yǔ)句中只能出現(xiàn) =>=<= 以及is null運(yùn)算符,不能出現(xiàn) <><>!=、以及is not null運(yùn)算符。否則在Oracledecode函數(shù)無法表達(dá)。
    ???當(dāng)必須使用 <, >, != is not null
    時(shí),建議采用如下變通方法:
    ????????? 1)使用 !=時(shí):例如
    ?? case? when? A!=B? then? e,
    ??????? 可改為? case? A=b? then? e1? else? e?? (間接實(shí)現(xiàn)
    A!=B)
    ????????? 2)使用 < 時(shí):例如
    ?? case? when? A<B? then? e,
    ??????? 可改為? case? A<=b? then? case A=B? then? e1? else? e? (間接實(shí)現(xiàn)
    A<B)
    ??????? 或??? case? A>=b? then? e1? else? e??? (間接實(shí)現(xiàn)
    A<B)
    ????????? 3)使用 > 時(shí):例如
    ?? case? when? A>B? then? e,?
    ??????? 可改為? case? A>=b? then? case A=B? then ?e1? else? e?? (間接實(shí)現(xiàn)
    A>B)
    ????????或??? case? A<=b? then? e1? else? e??? (間接實(shí)現(xiàn)
    A>B)
    ??????????4)使用is? not? null? 時(shí):例如
    ? case? when? A? is? not? null? then? e,
    ??????? 可改為:? case? A?? is? null? then? e1?? else?? e? (間接實(shí)現(xiàn)
    A? is? not? null)
    特別說明:當(dāng)執(zhí)行大數(shù)據(jù)量的操作時(shí),sql? Server? 對(duì) case when 的執(zhí)行效率極低,甚至可能會(huì)死機(jī),因此希望大家盡量不要使用case when


    5.??????? 參與左連接的列不能為常量。例如,不允許如下語(yǔ)句: select * from t1 left outer join t2 on t1.f1='A'


    6.??????? 左連接的寫法必須帶“outer”關(guān)鍵字。例如: select f1 from t1 left outer t2 on t1.f1 = t2.f1;而不是: select f1 from t1 left t2 on t1.f1 = t2.f1


    7.??????? 只能使用以下函數(shù),如要使用新的函數(shù)必須申報(bào),審批后才能使用。函數(shù):coalesce, cast, len, left, replace, right, substring, lower, upper, ltrim, rtrim, abs, acos, asin, atan, cos, ceiling, exp, floor, log, power, round, sign,sin, square, sqrt, tan, count, max, min, sum, avg


    8.??????? substring函數(shù)中起始位置為1
    ,表示從頭開始。

    9.??????? Like
    的一邊必須是字符串,只能在一邊出現(xiàn)表列。

    10.??? SQL語(yǔ)句中不能直接使用null,必須對(duì)null指明類型,在判斷某值為null
    時(shí)除外。

    11.??? 對(duì)于一些char/varchar的字段的值,即使是0,12…等值,也必須表達(dá)為
    0’,’1’,’2’…?

    12.??? castconvert語(yǔ)句中只支持到字符型、日期型和數(shù)字型的轉(zhuǎn)換,且日期型只支持UFDate的格式,即
    ’YYYY’-‘MM’-‘DD’?

    13.??? insert 語(yǔ)句不通過SQL翻譯器,在insert中不允許使用select


    14.??? 不能通過來percent? n 限制查詢結(jié)果集的記錄數(shù),也不能使用 select? top n
    的語(yǔ)句

    15.???? outer join 前后的表不能互相連接,
    不能重復(fù)連接,即不能出現(xiàn)以下形式的語(yǔ)句:
    ?????????? a? left outer join c on a.fda=c.fdsf? left outer join b on b.fdsa=c.fsdff? (該語(yǔ)句中表ab同時(shí)連接到了表c
    )
    ???????????? a? left outer join b on a.fda=b.fdsf? left outer join a on b.fdsa=a.fsdff? (該語(yǔ)句中表ab互聯(lián)
    )

    16.??? join on 必須嚴(yán)格匹配,不允許出現(xiàn)沒有onjoin


    17.???
    join…on
    后面慎用 or,如果用到,請(qǐng)把or的范圍用( )括起來

    18.???
    如果某個(gè)表有別名,則必須引用它的別名,不許引用它原來的表名

    19.????
    在子查詢中前后必須加上括號(hào)

    20.?? order by 后的列名在select
    后有多個(gè)相同的列,例如不能寫為:
    ?????select a, b, a, a? from fdsf? order by a? (a select后出現(xiàn)了多次)
    可以給a 加別名

    21.??? 不能使用select into
    的格式

    22.??? 給某個(gè)字符型的列賦值時(shí),如果其值含有單引號(hào),例如:set? col=’fsdf’fdsfdsf’sdf’…,
    有兩種解決方案:
    ??????1
    )將單引號(hào)寫成’’,? set? col=’fsdf’’fdsfdsf’’sdf’
    ??????? 2)通過set的方式賦值,即:set? col=
    ?????????? 然后:setString(8,” ’fsdf’fdsfdsf’sdf’”)
    posted on 2006-04-23 00:41 學(xué)二的貓 閱讀(1622) 評(píng)論(1)  編輯  收藏 所屬分類: 數(shù)據(jù)庫(kù)技術(shù)
    SQL開發(fā)手冊(cè)(2)" trackback:ping="http://www.tkk7.com/hsith/services/trackbacks/42566.aspx" /> -->

    評(píng)論:
    # re: NC-->SQL開發(fā)手冊(cè)(2) 2006-04-24 11:37 | 黃金時(shí)代已過
    難以想象NC現(xiàn)在居然還是在這樣的技術(shù)規(guī)范下維護(hù)
    以上所列有很多項(xiàng)已經(jīng)過時(shí)(例如第4條關(guān)于case when,oracle從9已經(jīng)支持了),并且直接這樣使用sql開發(fā)的方式已經(jīng)值得推敲。
    可能直接使用樸素的技術(shù)也能開發(fā)出很好的產(chǎn)品,讓我想起了compiere,唉,技術(shù)界可能太浮躁了。
    不管怎樣,還是很高興能看到這樣一個(gè)重量級(jí)的產(chǎn)品的技術(shù)資料。謝謝了!
      回復(fù)  更多評(píng)論
      
    主站蜘蛛池模板: 日韩精品电影一区亚洲| 一日本道a高清免费播放| 亚洲成人高清在线观看| 日本高清不卡aⅴ免费网站| 偷自拍亚洲视频在线观看99| 久久久久亚洲AV成人网| 一本色道久久88亚洲综合| 免费女人18毛片a级毛片视频| 日韩中文字幕在线免费观看| a视频免费在线观看| 三根一起会坏掉的好痛免费三级全黄的视频在线观看 | 成人免费视频小说| 毛片免费在线视频| 毛片A级毛片免费播放| 成人免费无遮挡无码黄漫视频| 成年女人免费视频播放体验区| 女人18毛片水最多免费观看| AAA日本高清在线播放免费观看| a级成人毛片免费视频高清| 久久精品电影免费动漫| 一级黄色免费网站| 精品一区二区三区免费观看| 国产一区二区三区免费观看在线| 少妇性饥渴无码A区免费| 全部免费毛片在线播放| 在线观看免费视频一区| 久久精品无码精品免费专区| 91麻豆最新在线人成免费观看| 色www永久免费| 99re在线这里只有精品免费| 妻子5免费完整高清电视| 国产麻豆剧传媒精品国产免费| 亚洲国产日韩成人综合天堂| 免费视频淫片aa毛片| 免费va在线观看| 亚洲精品二区国产综合野狼| 亚洲成AV人在线观看网址| 日韩免费视频播播| 国产亚洲精品无码专区| 亚洲美女大bbbbbbbbb| 亚洲AV无码一区二区三区牲色|