作者: keeauu9 時間: 2022-9-3 16:22 標題: SQL公式
本帖最後由 keeauu9 於 2022-9-3 16:41 編輯
select A, B, C, D, E, F, G from TB
where B like "%egg%" or C like "%egg%" or D like "%egg%" or E like "%egg%"
order by A asc
想問問, SQL 需要在B,C,D,E 找 %egg%, 但有沒有方法可以用一個變數(例KEYWORD), 會直接代入 B,C,D,E裡面
select A, B, C, D, E, F, G from TB
set KEYWORD as a "%egg%"
where B like KEYWORD or C like KEYWORD or D like KEYWORD or E like KEYWORD
order by A asc
謝謝.
作者: toylet 時間: 2022-9-3 17:40
提示: 作者被禁止或刪除 內容自動屏蔽
作者: keeauu9 時間: 2022-9-3 17:46
我是直接Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Z:\client2022.xlsx;Extended Properties="Excel 12.0 Xml;HDR=YES";
去connect excel.xlsx, 但條SELECT語句我不知道有沒有 @KEYWORD, 現在每個B,C,D,E 這樣重覆是行到的, 但進一步, DECLARE @KEYWORD 唔知得唔得?
謝謝.
作者: tunster 時間: 2022-9-3 17:56
點解咁多個 value 都裝類似資料?似設計出錯多啲
作者: keeauu9 時間: 2022-9-3 18:02
因B,C,D,E = 都是數字, B=hometel, C=mobile, D=office, E=fax,
現在有一些number 要找b,c,d,e, 看看是不相同人名,相同公司
作者: Kin_2012 時間: 2022-9-3 19:19
回覆 1# keeauu9
PLSQL function
作者: happy_99 時間: 2022-9-3 23:20
咁又得唔得:
select a, b, c, d, e from tb
where instr(b,'egg') + inst(c,'egg') + instr(d,'egg') + instr(e,'egg') > 0
作者: leungleung1234 時間: 2022-9-4 01:01
=== For Oracle ===
SELECT
A, B, C, D, E, F, G,
A || B || C || D || E || F || G AS searchCol
FROM
TB
WHERE
searchCol like '%egg%'
ORDER by
A ASC
作者: keeauu9 時間: 2022-9-4 07:05
其實這句是行的,
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Z:\client2022.xlsx;Extended Properties="Excel 12.0 Xml;HDR=YES";
select A, B, C, D, E, F, G from TB
where B like "%egg%" or C like "%egg%" or D like "%egg%" or E like "%egg%"
order by A asc
但就好像要查緝的文字, "%egg%" 太重複了, 要在B,C,D,E都要打4次. 因此才想有沒有方法, 只用一個變數, 直接套上B,C,D,E 即可?
只是簡單用Query Tool. 去查, 會不會唔同真SQL?
謝謝
作者: faiwaic 時間: 2022-9-4 11:57
其實這句是行的,
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Z:\client2022.xlsx;Extended Properties ...
keeauu9 發表於 2022-9-3 23:05
好似 8 樓咁 將 A至 G concat 晒佢 再 like 就一次過
作者: keeauu9 時間: 2022-9-4 12:17
謝謝, 但結果是: 無值提供給一或多個必要參數。 好像不行?
作者: faiwaic 時間: 2022-9-4 15:37
咁似係 data 有 null..
你要 concat 之前 check 下 null 值
作者: gilbertluis 時間: 2022-9-5 14:48
"...eg" 同 "g..." concat 左會 like "%egg%"
作者: java2 時間: 2022-9-5 18:10
中間加個符號 "...eg" +"/" + "g..." + "/" + ...
作者: pchai 時間: 2022-9-8 15:02
想問下你用咩language?
作者: CT333 時間: 2022-9-10 13:00
提示: 作者被禁止或刪除 內容自動屏蔽
作者: artai 時間: 2022-9-10 21:24
Stored Procedure, 搵一搵呢樣嘢, 應該係您想搵的
作者: bongbong3481 時間: 2022-9-11 10:50
回覆 3# keeauu9
excel file ? 用EXCEL 內置功能搞會不會更簡單

作者: mohalo 時間: 2022-9-12 12:01
本帖最後由 mohalo 於 2022-9-12 18:01 編輯
會不會Provider=Microsoft.ACE.OLEDB.12.0, 用不太正式的 SQL Command 去處理, 或唔可以接受 Select 又 Select 這樣?
作者: idler_99 時間: 2022-9-12 17:12
keyword 係hard code 係條sql 度?
select
A, B, C, D, E, F, G
from
TB,
(select '%eggKey% as key from dual) as XXX
where
B like XXX.key or C like XXX.key or D like XXX.key or E like XXX.key
order by A asc;
作者: hetzer 時間: 2022-9-17 19:06
依家好多SQL版本都容許declare variable。你Google吓你用個版本得唔得。原祖ANSI SQL就一定唔得。但我從來唔咁做,因為front end language 一早settle 哂呢D嘢,行query用macro call 乜都得,個condition有一萬個or都可以。
via HKEPC Reader for Android
作者: hetzer 時間: 2022-9-17 20:06
不過上面師兄教果D方法先係正解,SQL應該盡量唔好用OR,做得好慢,加上LIKE就慢上加慢,如果你有幾個表join埋一齊,咁寫法真係天荒地老都行唔完。Concat咗幾個field一次過check係正解。
寫SQL最直接嘅寫法好多時實戰中係唔用得,只後學生交功課時用。有料嘅programmer寫D query平常人睇係唔知佢做乜攪到咁複雜,但一行就知快千萬倍。
via HKEPC Reader for Android

