SQL 長度不能太長嗎? |
尚未結案
|
hazard
一般會員 發表:30 回覆:24 積分:10 註冊:2006-10-28 發送簡訊給我 |
我的 SQL 內容是 :
Line1:SELECT * FROM TAbleA WHERE Year = 93 AND ( EmpNo = 'E195' OR EmpNo = 'E260' OR EmpNo = 'E328' OR EmpNo = 'E283' OR EmpNo = 'E031' OR EmpNo = 'A073' OR EmpNo = 'A084' OR EmpNo = 'A120' OR EmpNo = 'H001' OR EmpNo = 'H009'
Line2: OR EmpNo = 'H015' OR EmpNo = 'H029' OR EmpNo = 'H032' OR EmpNo = 'H036' OR EmpNo = 'H039' OR EmpNo = 'H040' OR EmpNo = 'H041' OR EmpNo = 'H042' OR EmpNo = 'H047' OR EmpNo = 'H049'
Line3:....
.
.
.
Line235:....
Line236:OR EmpNo = 'C058' OR EmpNo = 'C107' OR EmpNo = 'J027' OR EmpNo = 'P122' OR EmpNo = 'P829' OR EmpNo = 'P830' OR EmpNo = 'P832' OR EmpNo = 'P919' OR EmpNo = 'X429' OR EmpNo = 'X448'
Line237:)
一 prepare 後會有錯誤訊息,
但用 SQL Exploer 直接下確沒問題,不知道有沒有人可以幫忙回答
|
chris_shieh
高階會員 發表:46 回覆:308 積分:240 註冊:2004-04-26 發送簡訊給我 |
是的, SQL不能太長 因為你是透過元件連接DB
所以限制是因為client端元件 看你的語法 應該可以以下作法
1. 先自己歸類一下, 開頭字元相符的, ex:只找 H*, A* P* 等 , 剩下抓回來自己比對, 不然依照這種條件要DB Server做會太耗資源了
2. 對於這種 OR EmpNo = 'C107' OR EmpNo = 'J027' OR EmpNo = 'P122'
可以改用 or EmpNO in ['C107','J207','P122...] 減少重複語句 @瞭解越多.懂得越少@
|
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
|
hazard
一般會員 發表:30 回覆:24 積分:10 註冊:2006-10-28 發送簡訊給我 |
用 EmpNO in ('C107','J207','P122...) 這種方法是可行的,但我這個 Query Search 出來後要做編輯,用上面的方法,RequestLive 為 True 還是有問題 而且我這個 Query 還有 Filter 絛件過濾,所以沒辦法像 chris_shieh 所講的抓下來再比對,必須在 Query.Active 後就是我所要得資料,因為編輯完後,要全部回存 至於 SQL不能太長 ,我是參照
http://delphi.ktop.com.tw/topic.php?topic_id=20184
的做法,所以 Query.SQL.count 有 200多個,應該就不會有 255 的限制
|
Chance36
版主 發表:31 回覆:1033 積分:792 註冊:2002-12-31 發送簡訊給我 |
SQL指令基本上是一文字串,以斷行符號(#13)分列,格式如下
|------第一列--------------|-----第二列---------------|------第三列---------------|
Select * From tttt Where #13xxxxxxxxxxxxxxxxxxxxxxxx#13xxx xxxxxxxxxxxxxxxxxxxxx#13 如上所示,每列以斷行符號做隔 單句敘述不要超過256個Byte﹒=>是指每列字元不可超過256Bytes(含斷行符號#13),依資料庫的不同可能有不同的限制,不管如何256Bytes算是最大公約數了,就以它為準吧! 而整個SQL指令的總長度,依資料庫的不同而有不同,印象中不知那個資料庫的SQL總長度不可超4KBytes(含斷行符號)(僅供參考)
另外: TQuery.SQL.Text := '....' '......' ...... 用這種方式設定SQL要注意自行加入斷行符號,免得單列長度超過256字元 TQuery.SQL.Add('....'); 而用這種方式設定SQL則要注意加入的字串不要超過255Bytes即可,斷行符號系統會自動加入 不管用何方式,SQL總長度還是要注意一下,當然啦!在大部份的情形下是不會超過的。_______________________________________ 深藍的魚,祝您好運..........連連 |
pcboy
版主 發表:177 回覆:1838 積分:1463 註冊:2004-01-13 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |