SQL語法如何動態多個like |
答題得分者是:syntax
|
wst
初階會員 發表:20 回覆:66 積分:37 註冊:2006-09-23 發送簡訊給我 |
|
syntax
尊榮會員 發表:26 回覆:1139 積分:1258 註冊:2002-04-23 發送簡訊給我 |
|
暗黑破壞神
版主 發表:9 回覆:2301 積分:1627 註冊:2004-10-04 發送簡訊給我 |
|
wst
初階會員 發表:20 回覆:66 積分:37 註冊:2006-09-23 發送簡訊給我 |
|
ko
資深會員 發表:28 回覆:785 積分:444 註冊:2002-08-14 發送簡訊給我 |
之前做過類似的我的做法是雙胞胎TABLE
資料庫是MSSQL 如TABLE1如下 EMP_ID 員工代碼 EMP_NAME 姓名 EMP_興趣 EMP_專長 EMP_經歷 ----------------------------------- 員工代碼 姓名 興趣 專長 經歷 950543 黃 畫圖,書法 修水電 水電工,文藝組長 950235 李 讀書,書法 會計 會計組長,校友會代表 ----------------------------------- TABLE2如下 EMP_ID EMP_INFO 資訊總合 ----------------------------------- 員工代碼 資訊總合 950543 950543黃畫圖,書法修水電水電工,文藝組長 950235 950235李讀書,書法會計會計組長,校友會代表 ----------------------------------- 寫一個TIGGER再生成TABLE1的同時就將所有的欄位統合變成EMP_INFO 當要找文藝比賽分組的時候會先找"組長"級的就會變成先在TABLE2上面搜尋"組長"次搜尋"書法"或者"畫圖"或者"書" 無論怎麼查詢都可以用'%關鍵字%' 對EMP_INFO做查詢
------
====================== 昏睡~ 不昏睡~ 不由昏睡~ |
wst
初階會員 發表:20 回覆:66 積分:37 註冊:2006-09-23 發送簡訊給我 |
感謝您的回答,那我也講我的作法好了,我是在表格中設一個超大的欄位,再將所有的欄位的資料放進法直接對那個欄位搜尋,這樣解決了對多個欄位搜尋某個關鍵字。
但今天網路上很多用php、asp、jsp寫的程式都允許同時下多個關鍵鍵而不是單一鍵值,例如要住台中、要男性、要25歲以上,這三個不可能在同一個欄位上面,應為要合乎正規化,因此寫了一個超大的欄位來搜尋,但是長久以來我寫程式都已經設成某幾個欄位要搜尋,這種程式不難但今天難在假設有10個欄位,我不知道用戶用那幾個欄位,因此樓上的網友介紹說用程式語言一段一段加成sql語法,感覺似乎可能,我要找個時間做看看。如果有現在的範例可以參考就不用浪費太多的時間。 謝謝您的回答及範例,又讓我多一個可行的作法。謝謝 |
kevin2004
資深會員 發表:18 回覆:463 積分:416 註冊:2005-05-29 發送簡訊給我 |
|
wst
初階會員 發表:20 回覆:66 積分:37 註冊:2006-09-23 發送簡訊給我 |
|
暗黑破壞神
版主 發表:9 回覆:2301 積分:1627 註冊:2004-10-04 發送簡訊給我 |
基本上,我不建議你用超大欄位這種做法。
我也不喜歡程式設計師用 like "«c%" 這種做法。我知道 like 很好用。不過,我可以同意使用的是 like "abc%" 這種做法。因為第一種做法會讓系統陷入全文檢索的慢速度。 而第二種則會有比較快的效率。 我遇到像你這種問題時,我還是用程式去完成 sql 語法。 我不會利用 borland 那種 sql 的方式。先去訂那些個什麼參數等等。 我還是會自己做 "select xxx from yyy where ........" 這樣的方式,才去叫 SQL Exec.... 而不是去訂它的 parameter.. 我比較追求的程式設計方法是”大家通用” 也就是我這樣的寫法,就算到了不是 windows, 的環境, 要修改的部份不會太大的狀況。所以我用這種寫法。 我想。你如果有接觸到 php, asp, jsp 應該會有這種體會。 borland 把 SQL 包得太。。。。自我了。 所以有你所說的問題。退一步,回到純 SQL 語法來操作它的元件。 你會發現你的問題可以解決了。 ===================引 用 wst 文 章=================== 或許不太常但是在搜尋不特定欄位時,無法用程式解決(我想不出好的方法),我就會將某些查詢的欄位資料全部存進去一個欄位裏,最早以前我是用view,不過好像需要在資料庫中設定,無法用程式寫法? |
wst
初階會員 發表:20 回覆:66 積分:37 註冊:2006-09-23 發送簡訊給我 |
|
Stallion
版主 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
插個花~
這種例子應該沒有想像中的困難吧!個人覺得以wst兄的工作經驗稍微想一下應該可以輕鬆解決。 先說說我的方法,我會用最笨但是最有效的方法來作。 1.WHERE子句的欄位是必要的篩檢關鍵。 2.其餘的篩檢條件依據使用者的選定以AND的語法連結而已。 例: ADOQuery.SQL.Clear; ADOQuery.Parameters.Clear; ADOQuery.SQL.ADD('SELECT Field_1,Field_2,Field_3,Field_4,Field_5,Field_6,Field_7 FORM aTABLE WHERE Field_1 = : Value_1'); if ( Self.ValueCheckBox2.Check ) then ADOQuery.SQL.ADD('AND Field_2 = :Value_2'); if ( Self.ValueCheckBox3.Check ) then ADOQuery.SQL.ADD('AND Field_3 = :Value_3'); //依此類推 ADOQuery.SQL.ADD('ORDER BY Field_1'); ADOQuerySQL.Parameters.ParamValues['Value_1'] := Value_1; if ( Self.ValueCheckBox2.Check ) then ADOQuery.SQL.Parameters.ParamValues['Value_2'] := Value_2; if ( Self.ValueCheckBox3.Check ) then ADOQuery.SQL.Parameters.ParamValues['Value_3'] := Value_3; //依此類推 ADOQuery.SQL.Open; ===================引 用 wst 文 章=================== 版主您好,請問能不能給個範例,同時搜尋1-7個關鍵字(由使用者決定) 正如您所說的我正在學Delphi for php,因為我很多的web網站都可以讓使用者勾選數個不等的條件再搜尋, 想了一天,想不出來,因為以前我寫Delphi時沒有寫過不定的欄位數、或不定數量的關鍵值的sql語法。目前我手上的書都沒有這樣的範例。真傷腦筋。
編輯記錄
Stallion 重新編輯於 2007-05-26 19:35:40, 註解 無‧
|
wst
初階會員 發表:20 回覆:66 積分:37 註冊:2006-09-23 發送簡訊給我 |
您的範例,點醒了我,原來以前我也有寫過類似的程式,可能是太久沒有寫SQL了,而且最近被公司的主管操的不成人形了,又睡不飽(記憶及理解好像會退化)壓力又大(要作web 所以學習PHP),竟然想不出這個方式。真是謝謝您,
但是如果是單一欄位多個鍵值呢?我上網查了一下,查到這個網站, http://idd.ccnet.com.tw/ebook/SOL.htm#12,裏面有個範例 範例:查3月份,CallerID為遠傳者的明細,且依CallinTime最為排序, 我想就從他來修改吧? 我沒有什麼利害的不過是「駑馬十駕,功在不捨」(這一句可能會洩漏我的年齡),修改,瞎拼,結果竟然大受歡迎,說真的我最近讀php的書,讓我覺的很汗顏,以前我都是在論譠找delphi範例,鮮少讀書的。 |
Stallion
版主 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
hehe...
你講的生理退化現象我好像都有而且蠻嚴重的,另外我相信你不會比我更老吧?哈~ 同時我更理解到,當你的興趣變成工作又變成一種壓力的時候,箇中滋味難以筆墨形容。 眼見就將退休,終於快可以作自己真正喜歡作的事情了!快樂~快樂~待價而沽~待價而沽~ ===================引 用 wst 文 章=================== 您的範例,點醒了我,原來以前我也有寫過類似的程式,可能是太久沒有寫SQL了,而且最近被公司的主管操的不成人形了,又睡不飽(記憶及理解好像會退化)壓力又大(要作web 所以學習PHP),竟然想不出這個方式。真是謝謝您, 但是如果是單一欄位多個鍵值呢?我上網查了一下,查到這個網站, http://idd.ccnet.com.tw/ebook/SOL.htm#12,裏面有個範例 範例:查3月份,CallerID為遠傳者的明細,且依CallinTime最為排序, 我想就從他來修改吧? 我沒有什麼利害的不過是「駑馬十駕,功在不捨」(這一句可能會洩漏我的年齡),修改,瞎拼,結果竟然大受歡迎,說真的我最近讀php的書,讓我覺的很汗顏,以前我都是在論譠找delphi範例,鮮少讀書的。 |
wst
初階會員 發表:20 回覆:66 積分:37 註冊:2006-09-23 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |