从SQL数据库获取包含数字子集的行

时间:2015-07-09 21:11:01

标签: sql sql-server database

我有SQL数据库表,我试图返回列以8个特定数字开头的行。例如,我们可以调用列#34;数字",它总是有11个数字。我期待返回前8行是" 24681234"的行。我试过使用" LIKE"命令,但考虑到数据库的大小,它需要FOREVER运行。这是我目前使用的命令:

SELECT TOP 1 CREATE_TIME, EMAIL, FIRST_NAME, LAST_NAME, NUMBER, SN
FROM MY_TABLE WHERE NUMBER LIKE '35722806%' OR NUMBER LIKE '35981106%' 

是否有更快捷的方法来搜索此信息?

2 个答案:

答案 0 :(得分:0)

为您提供几种可能的选择: -

SELECT TOP 1 CREATE_TIME, EMAIL, FIRST_NAME, LAST_NAME, NUMBER, SN FROM MY_TABLE WHERE LEFT(NUMBER,8) ='35722806' OR LEFT(IMEI,8) ='35981106'

SELECT TOP 1 CREATE_TIME, EMAIL, FIRST_NAME, LAST_NAME, NUMBER, SN FROM MY_TABLE WHERE SUBSTRING(NUMBER,0,9) ='35722806' OR SUBSTRING(IMEI,0,9) = '35981106'

也许在列上创建索引也会有所帮助。

答案 1 :(得分:0)

假设列'number'是数字数据类型,你可以

SELECT TOP 1 CREATE_TIME, EMAIL, FIRST_NAME, LAST_NAME, NUMBER, SN 
FROM MY_TABLE 
WHERE 
   NUMBER BETWEEN 35722806000 AND 35722806999 
   OR IMEI BEWEEN 35981106000 AND 35981106999 

在此字段上添加索引将有助于选择,但许多插入的性能是折衷的。