意见箱
恒创运营部门将仔细参阅您的意见和建议,必要时将通过预留邮箱与您保持联络。感谢您的支持!
意见/建议
提交建议

sql的OUTER APPLY

来源:恒创科技 编辑:恒创科技编辑部
2023-12-14 19:40:59

今天写一个查询sql,其中涉及到一个银行卡绑定表(表名:BankBind),我要将这个表的开户行字段的值进行分割出省份、支行,

这个开户行字段存储的值如“广东省广东省分行江门市分行恩平市支行”、“招商银行”、“北京市八里庄支行”、“内蒙古自治区格勒日支行”等,分割的话涉及到一些逻辑判断,所以自定义了一个表值函数GetDistrictByBankBranch,入参是一个开户行值,返回一张表,包含省份、支行2列数据,当然就一条记录。


sql的OUTER APPLY

select * from GetDistrictByBankBranch('广东省广东省分行江门市分行恩平市支行')

返回:

province branch
广东省 广东省分行江门市分行恩平市支行

现在呢,要将全部记录的省份、支行查询出来,记得以前有过类似经历, 但是想不起来怎么写sql了。 最后开发组的一个小伙给出了方案,即使用sql的OUTER APPLY,如下是完整sql:

select *
from BankBind a
OUTER APPLY GetDistrictByBankBranch(a.BankSubbranch) b

另,做个笔记。所负责的一个项目的持久层使用的是EF,今天优化EFDbContext类的Add方法,使用到获取一个PO的key,方法是dbEntities.GetEntityKey(entity),其中的dbEntities是继承自DbContext的一个实体容器类的名称,这个通常在新建edmx时指定并创建的。

上一篇: pl/sql里的exists和in的差别 下一篇: 一文读懂简单查询代价估算