sql函数substr与like语句效率对比

发布时间:2021-01-13编辑:脚本学堂
在sql数据库中,substr用于字符串的截取,也可以模拟like模糊查询语句的功能,在sql查询时用substr代替like ,可以提升查询效率,具体见本文教程内容。

在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)

sql server中语法是:
 

substring(column name,starting position,length)

对于这个函数来说,这两个实现之间的惟一差别就是函数的名称。

例1,返回emp id的前3个字符:
 

SELECT SUBSTRING(EMP_ID,1,3)FROM EMPLOYEE_TBL

例2,返回emp_id的第4个和第5个字符:
 

SELECT SUBSTRING(EMP_ID,4,2)FROM EMPLOYEE_TBL

例3,返回emp_id的第6个到第9个字符:
 

SELECT SUBSTRING(EMP_ID,6,4) FROM EMPLOYEE_TBL

例4,以下在sql server和mysql中均可使用。
 

SELECT EMP_ID,SUBSTRING(EMP_ID,1,3)
FROM EMPLOYEE_TBL;

EMP_IDSUB
.............. ...........
311549902  311
442346889  442
213764555  213
313782439  313
220984332  220
443679012  443

6 rows affected.

例5,以下sql语句是用于oracle的:
 

SELECT EMP_ID,SUBSTR(EMP_ID,1,3)
FROM EMPLOYEE_TBL;

EMP_ID SUB
.........
311549902311
442346889442
213764555213
313782439313
220984332220
443679012443

6 rows selected.