Board logo

標題: [操作疑難] SQL公式 [打印本頁]

作者: 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

點解咁多個 value 都裝類似資料?似設計出錯多啲
tunster 發表於 2022-9-3 17:56



    因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

好似 8 樓咁  將 A至 G concat 晒佢 再 like 就一次過
faiwaic 發表於 2022-9-4 11:57



    謝謝, 但結果是: 無值提供給一或多個必要參數。 好像不行?
作者: faiwaic    時間: 2022-9-4 15:37

謝謝, 但結果是: 無值提供給一或多個必要參數。 好像不行?
keeauu9 發表於 2022-9-4 04:17



    咁似係 data 有 null..
你要 concat 之前 check 下 null 值
作者: gilbertluis    時間: 2022-9-5 14:48

"...eg" 同 "g..." concat 左會 like "%egg%"
作者: java2    時間: 2022-9-5 18:10

中間加個符號 "...eg" +"/" + "g..." + "/" + ...

"...eg" 同 "g..." concat 左會 like "%egg%"
gilbertluis 發表於 2022-9-5 06:48

作者: 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





歡迎光臨 電腦領域 HKEPC Hardware (https://www.hkepc.com/forum/) Powered by Discuz! 7.2