跳轉到

查詢條件運算子

Darbware ERP 全系統的「瀏覽與查詢」、「條件過濾」、「報表篩選」畫面,在每個查詢欄位旁邊都會有一個運算子(Operator)下拉選單。這個選單決定您輸入的值要怎麼跟資料庫比對 —— 是要完全相等、開頭相符、包含片段,還是介於兩個值之間。

本頁說明系統提供的 19 個運算子、它們會產生什麼樣的 SQL 條件、以及在日常查詢時該如何選用。

運算子下拉會依欄位型別自動過濾

您在下拉裡看到的不一定是全部 19 個——系統會依該欄位的資料型別(文字/數字/日期/是非)只列出合理的運算子,避免出現「數字欄選『開始於』」這種沒有意義的組合。各型別可用哪些,見各型別可用的運算子

適用範圍

本頁介紹的運算子適用於所有使用資料表格查詢條件列的畫面,例如 客戶主檔查詢品項主檔查詢銷售訂單查詢庫存異動查詢應收帳款查詢 等。

查詢條件運算子下拉畫面

功能簡介

在每一個查詢畫面的條件列,您會看到三個欄位並列:

  1. 欄位名稱(例如「客戶代號」、「客戶簡稱」)
  2. 運算子(本頁主題,例如「等於」、「開始於」、「包含」)
  3. 輸入值(例如 C001工業

系統依據這三項組合,動態產生 SQL 的 WHERE 條件送到資料庫。選對運算子,可以讓查詢更精準、更快速;選錯運算子,最常見的狀況是「明明資料在那裡,就是查不到」。

前置需求

  • 已具備登入 Darbware ERP 的使用者帳號
  • 具備該查詢畫面的瀏覽權限
  • 了解您要查詢的欄位是字串數值日期(不同型態下部分運算子的行為會不同)

操作步驟

以下以 B 基本資料 → 客戶主檔查詢 為例,示範如何使用運算子。

1. 開啟查詢畫面

從主選單選擇 B 基本資料 → 客戶主檔,切換到 瀏覽 分頁,或直接開啟 客戶主檔查詢 視窗。

客戶主檔查詢畫面

2. 選擇欄位與運算子

在條件列上,找到要查詢的欄位(例如 客戶代號),點選該欄位旁邊的運算子下拉選單。下拉裡只會列出該欄位型別適用的運算子,直接從中挑選即可。

預設值

字串欄位預設是 開始於(StartsWith),因此直接輸入 C 即可查出所有 C 開頭的客戶。若要做完全比對,請改選 等於

換了欄位,運算子可能被重設

在同一個條件列改選另一個欄位時,若原本選的運算子在新欄位的型別下不適用,系統會自動把它重設為 不等於(四種型別都適用的安全值)。重選您要的運算子即可。

3. 輸入比對值

於右側的輸入欄位填入要比對的值:

  • 單一值:如 C001
  • 多個值(搭配 被包含 / 不被包含):用半形逗號分隔,如 C001,C002,C003
  • 區間值(搭配 介於之間):填寫起始值與結束值兩格

4. 執行查詢

按下工具列的 查詢 按鈕,或按 F5。系統會依據條件列組合出 SQL 送到資料庫,結果顯示於下方資料列。

注意

條件列可以同時對多個欄位設定運算子。多欄位之間預設以 AND 結合,意思是「所有條件都要同時符合」才會出現在結果中。

完整運算子列表

以下表格整理 19 個運算子的中英文名稱、行為、以及產生的 SQL 片段。哪些欄位看得到哪些運算子,見下一節各型別可用的運算子

一般比較運算子

中文名稱 英文名稱 字串欄 SQL 數值欄 SQL
等於 IsEqualTo col = 'x' col = x
不等於 IsNotEqualTo col <> 'x' col <> x
大於 IsGreaterThan col > 'x' col > x
大於或等於 IsGreaterThanOrEqualTo col >= 'x' col >= x
小於 IsLessThan col < 'x' col < x
小於或等於 IsLessThanOrEqualTo col <= 'x' col <= x

字串比對運算子

以下 4 個運算子只在文字欄位的下拉中出現(數字、日期、是非欄位不會列出)。

中文名稱 英文名稱 產生的 SQL
開始於(字串欄預設值) StartsWith col LIKE 'x%'
結尾為 EndsWith col LIKE '%x'
包含 Contains col LIKE '%x%'
不包含 DoesNotContain col NOT LIKE '%x%'

清單比對運算子

中文名稱 英文名稱 字串欄 SQL 數值欄 SQL
被包含 IsContainedIn col IN ('x','y','z') col IN (1,2,3)
不被包含 IsNotContainedIn col NOT IN ('x','y','z') col NOT IN (1,2,3)

多值輸入方式

使用「被包含」或「不被包含」時,在輸入欄位用半形逗號分隔多個值,例如:C001,C002,C003。系統會自動拆成 IN 條件。

日期欄位沒有這兩個運算子

「被包含/不被包含」只在文字數字欄位的下拉中出現。要查多個特定日期時,請改用 介於之間 拉一段區間,或分次查詢。

空值運算子

中文名稱 英文名稱 行為 出現於哪些欄位
等於 Null IsNull col IS NULL 全部型別
不等於 Null IsNotNull col IS NOT NULL 全部型別
等於空白 IsEmpty 去除前後空白後長度 = 0 僅文字欄位
不等於空白 IsNotEmpty 去除前後空白後長度 > 0 僅文字欄位

Null 與空白的差別

  • Null:欄位「從未填值」或「被刪成空」,在資料庫裡是 NULL
  • 空白:欄位有值但內容只有空白字元(僅文字欄位會有這種狀態)。

實務上建議兩者都查一次,避免漏資料。數字欄位要找 0 請直接用 等於 輸入 0

區間運算子

中文名稱 英文名稱 字串欄 SQL 數值欄 SQL
介於之間 Between col BETWEEN 'x' AND 'y' col BETWEEN x AND y

特殊條件切換

中文名稱 英文名稱 說明
套用此條件 Consider This Condition 套用系統預設條件(例如「只顯示啟用中」),通常不需要改動
不套用此條件 Not Consider This Condition 忽略此欄位的所有條件,等同於不過濾這一欄

常用情境範例

範例 1:找一筆特定客戶

情境:您知道客戶代號是 C001,想直接查這一筆。

  1. 客戶代號 欄位的運算子選擇 等於
  2. 輸入值填入 C001
  3. 查詢

查不到?

若查不到,有可能該欄位在資料庫是固定長度(例如 char(10)),資料實際存的是 C001(後面補空白)。此時請改用 開始於包含,見下一範例。

範例 2:找所有 C 開頭的客戶

情境:一次列出所有「C」系列客戶。

  1. 客戶代號開始於
  2. 輸入值填入 C
  3. 查詢

範例 3:找名稱含「工業」的客戶

情境:想找所有公司名稱含有「工業」兩字的客戶,無論前後是什麼字。

  1. 客戶簡稱包含
  2. 輸入值填入 工業
  3. 查詢

結果會列出「XX 工業股份有限公司」、「工業科技」等所有包含「工業」的資料。

範例 4:一次查 3 個特定客戶

情境:業務要比對 C001C025C108 這 3 家客戶。

  1. 客戶代號被包含
  2. 輸入值填入 C001,C025,C108(用半形逗號分隔,不要加空白)
  3. 查詢

範例 5:找金額超過 10 萬的訂單

情境:在 E 銷售 → 銷售訂單查詢,找出未結案且金額大於 100,000 的訂單。

  1. 訂單金額大於
  2. 輸入值填入 100000(不要加千分位逗號)
  3. 查詢

範例 6:找尚未結案的訂單

情境:列出所有「結案日期」還沒填的訂單。

  1. 結案日期等於 Null
  2. 無需輸入值
  3. 查詢

各型別可用的運算子

系統會判斷條件列上該欄位的資料型別,只在下拉裡列出合理的運算子。因此您不需要自己記「哪個運算子不能用在哪種欄位」——選單裡看得到的,就是可以用的。

欄位型別 常見欄位例子 可用的運算子
文字 客戶代號、品名、備註、單號 全部 19 個
數字 數量、單價、金額、天數 等於、不等於、大於、大於或等於、小於、小於或等於、被包含、不被包含、等於 Null、不等於 Null、介於之間、套用此條件、不套用此條件(13 個
日期 訂單日期、交期、建檔日期 等於、不等於、大於、大於或等於、小於、小於或等於、等於 Null、不等於 Null、介於之間、套用此條件、不套用此條件(11 個
是非(Y/N) 是否結案、停用、是否審核 等於、不等於、等於 Null、不等於 Null、套用此條件、不套用此條件(6 個

各型別拿掉了哪些、為什麼

型別 看不到的運算子 原因
數字 開始於、結尾為、包含、不包含 這 4 個是文字的片段比對,對數字沒有意義
數字 等於空白、不等於空白 數字沒有「空白字串」這種狀態;要找 0 請用 等於 輸入 0
日期 開始於、結尾為、包含、不包含 同上,日期不做文字片段比對
日期 被包含、不被包含、等於空白、不等於空白 多個日期請改用 介於之間 拉區間
是非 大小比較、片段比對、清單、區間 只有「是」與「否」兩種值,比大小或找片段沒有意義

少數欄位仍會列出全部 19 個

若系統無法判定某個欄位的型別(多半出現在預設條件值等進階設定畫面),下拉會不過濾、列出全部 19 個,由設定者自行判斷。日常查詢畫面的欄位都有型別,會正常過濾。

文字欄位保留了大小比較

大於大於或等於小於小於或等於文字欄位依然可用,這是刻意保留的——品號、單號這類編碼欄位常需要用「大於等於 A001 且小於等於 A999」的方式拉區間。

其他容易踩雷的要點

日期欄位的等於會自動展開為區間

對日期欄位使用 等於(例如 2026-04-17)時,系統會自動轉成「該日 00:00:00 到隔天 00:00:00 之前」的範圍,這樣才能正確比對帶有時分秒的 DateTime 欄位。因此不用擔心「資料明明是當天,但因為有時分秒查不到」的問題。

固定長度字串欄位

若欄位在資料庫是 char(N) 型態(例如 char(10)),資料會以空白補滿。此時用 等於C001 有可能查不到(因為實際值是 C001)。建議改用 開始於包含,或由系統管理員將欄位改成 varchar

常見問題

為什麼我輸入「A001」用「等於」查不到?

最常見的原因是資料庫欄位型態為固定長度字串(char(N)),實際存的資料後面有補空白。請改用 開始於 A001包含 A001,通常就能查到。若經常發生,請回報給系統管理員評估是否調整欄位型態。

「被包含」要怎麼輸入多個值?

在輸入欄位用半形逗號分隔即可,例如 C001,C002,C003不要加空白、不要用全形逗號、不要加引號,系統會自動處理。若值本身含逗號(罕見情況),請洽 IT 支援。

「套用此條件」和「不套用此條件」是什麼意思?

這是系統為了「欄位預設條件」設計的開關。例如客戶主檔查詢預設只顯示啟用中的客戶,這個「啟用中」就是欄位預設條件。

  • 套用此條件(預設):沿用系統預設,繼續只看啟用中的客戶。
  • 不套用此條件:忽略預設,把啟用與停用的客戶都列出來。

一般情況不需要改動,只有在需要查停用資料時才切換。

為什麼下拉裡找不到「包含」(或其他運算子)?

因為那個運算子對這個欄位的型別沒有意義,系統已自動把它從清單中拿掉。例如數字欄與日期欄不會出現「開始於/結尾為/包含/不包含」,日期欄不會出現「被包含/不被包含」。完整對照見各型別可用的運算子;要做區間查詢請改用 介於之間 或大小比較。

「等於 Null」和「等於空白」差在哪?
  • 等於 Null:欄位在資料庫是 NULL,表示「從未填值」。
  • 等於空白:欄位有值但內容是空白字串(僅文字欄位有這個選項)。

兩者在資料庫是不同狀態。如果您要「找所有沒填的」,保險做法是先查 等於 Null,再查 等於空白,或請 IT 協助寫成一次查詢。

查詢條件可以存起來下次再用嗎?

可以。大部分查詢畫面都支援 儲存條件 功能,把目前設定的所有欄位運算子與值存成命名的查詢模板,下次在同畫面直接載入即可。詳見各模組的查詢說明。

輸入值的大小寫有差嗎?

預設情況下字串比對不區分大小寫(因 SQL Server 的預設 Collation)。但若您的資料庫採用區分大小寫的 Collation,則 C001c001 視為不同。如不確定,請洽 IT 確認。

相關功能