sql 中的 case 、locate  、charindex等

时间:2019-01-17
本文章向大家介绍sql 中的 case 、locate  、charindex等,主要包括sql 中的 case 、locate  、charindex等使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

mysql   
case是通用sql语法(像minus(减去),intersect(交集)和union all(并集)这种一样)
case:  
SELECT DISTINCT package_code as package_code
,case when  SUBSTRING(PACKAGE_CODE,1,LOCATE('_',PACKAGE_CODE)-1)='' then PACKAGE_CODE else  SUBSTRING(PACKAGE_CODE,1,LOCATE('_',PACKAGE_CODE)-1) END AS MAIN_PLAN_CODE
FROM t_package_benefit;

case
when ... then ...
when ... then ...
else 
end

locate  跟like 区别:
like % 查全部  locate % 查 %
select name from tablename where locate('%',name)>0; 查带%号
select * from tablename where name like '%%%';  查全部


sqlserver
SELECT DISTINCT [package_code] as package_code,case when SUBSTRING(PACKAGE_CODE,0,charindex('_',PACKAGE_CODE))='' then PACKAGE_CODE else SUBSTRING(PACKAGE_CODE,0,charindex('_',PACKAGE_CODE)) END AS MAIN_PLAN_CODE
FROM t_package_benefit;
通过charindex如果能够找到对应的字符串,则返回该字符串位置,否则返回0。
patindex也可以用来判断一个字符串中是否包含另一个字符串,两种的差异在于,前者是全匹配,后者支持模糊匹配,跟like一样用%来匹配。
charindex基本语法如下:
charindex ( expressionToFind , expressionToSearch [ , start_location ] )

expressionToFind :目标字符串,就是想要找到的字符串,最大长度为8000 。

expressionToSearch :用于被查找的字符串。

start_location:开始查找的位置,为空时默认从第一位开始查找。