簡體   English   中英

選擇大量數據,如 SQL server

[英]Select a large volume of data with like SQL server

我有一個帶有 ID 列的表

ID 列是這樣的: IDxxxxyyy x 將是 0 到 9

我必須選擇 ID 為 ID0xxx% 到 ID3xxx% 的行,大約有 4000 個 ID 帶有 % 通配符,從 ID0000% 到 ID3999%。

就像把 LIKE 和 IN 結合起來

Select * from TABLE where ID in (ID0000%,ID0001%,...,ID3999%)

我無法弄清楚如何在這種情況下進行選擇。

如果您有任何想法,請幫忙。

非常感謝!

您可以將模式匹配與LIKE 例如

WHERE ID LIKE 'ID[0-3][0-9][0-9][0-9]%'

將匹配一個字符串:

  1. 以 ID ( ID ) 開頭
  2. 然后有第三個字符,它是 0 到 3 [0-3] 之間的數字
  3. 然后還有 3 個數字( [0-9][0-9][0-9]

這不太可能表現良好。 如果現在改變你的表格設計還為時不晚,我會把你的Identifier的組件分開並單獨存儲,然后使用計算列來存儲你的完整 ID,例如

CREATE TABLE T
(
        NumericID INT NOT NULL,
        YYY CHAR(3) NOT NULL, -- Or whatever type makes up yyy in your ID
        FullID AS CONCAT('ID', FORMAT(NumericID, '0000'), YYY),
    CONSTRAINT PK_T__NumericID_YYY PRIMARY KEY (NumericID, YYY)
);

那么您的查詢很簡單:

SELECT  FullID
FROM    T
WHERE   NumericID >= 0 
AND     NumericID < 4000;

這明顯更容易讀寫,而且速度也會明顯更快。

這應該這樣做,它將獲得所有以 IDx 開頭的 ID,x 從 0 到 4

Select * from TABLE where ID LIKE 'ID[0-4]%'

你可以試試 :

Select * from TABLE where id like 'ID[0-3][0-9]%[a-zA-Z]';

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM