![](/img/trans.png)
[英]Need help in Simple select of Sql Server query with large volume of data in table
[英]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]%'
將匹配一個字符串:
ID
) 開頭[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.