![](/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.