据说在sql查询时用substr代替like 可以提升查询效率
像下面的例子:
用这个substr关键字
SELECT * FROM iplog a WHERE substr(a.ip, 0, 5) =’88.12′
用这个like关键字
SELECT * FROM iplog a WHERE a.ip LIKE ’88.12%’
在大多数SQL实现里都有获取字符串子串的函数。但名称可能略有不同,比如Oracle和SQL Server。
在Oracle里的语法是:
SUBSTR(COLUMN NAME,STARTING POSITION,LENGTH)
在SQLServer里的语法是:
SUBSTRING(COLUMN NAME,STARTING POSITION,LENGTH)
对于这个函数来说,这两个实现之间的惟一差别就是函数的名称。
下面的SQL语句返回EMP ID的前3个字符:
SELECT SUBSTRING(EMP_ID,1,3)FROM EMPLOYEE_TBL
下面的SQL语句返回EMP_ID的第4个和第5个字符:
SELECT SUBSTRING(EMP_ID,4,2)FROM EMPLOYEE_TBL
下面的SQL语句返回EMP_ID的第6个到第9个字符:
SELECT SUBSTRING(EMP_ID,6,4) FROM EMPLOYEE_TBL
下面的范例在SQL Server和MySQL里都可以使用:
SELECT EMP_ID,SUBSTRING(EMP_ID,1,3)
FROM EMPLOYEE_TBL;
EMP_ID SUB
.............. ...........
311549902 311
442346889 442
213764555 213
313782439 313
220984332 220
443679012 443
6 rows affected.
下面的SQL语句是用于Oracle的:
SELECT EMP_ID,SUBSTR(EMP_ID,1,3)
FROM EMPLOYEE_TBL;
EMP_ID SUB
.........
311549902 311
442346889 442
213764555 213
313782439 313
220984332 220
443679012 443
6 rows selected.