在SQL Server 2022以下版本实现BIT_COUNT() #1485
Closed
LeaFrock
started this conversation in
Show and tell
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
在特定情形下,结合位操作的思想去设计数据结构(表列),可以降低复杂度、存储成本并提高性能。
SQL Server 2022版本新增了一些位操作相关的数据库函数,例如BIT_COUNT()。而对于2022以下的版本,需要自己实现。
本帖分享一下个人的实现,供读者参考:
数据库端
添加自定义数据库函数,脚本如下:
成功后,应该可以在SMSS客户端里看到该函数。截图如下:
客户端(FreeSql)
按照文档说明,添加一个静态类如下:
示例
假设表table存在一列,名为Flags,int类型。
await freeSql.Select<Table>().FirstAsync(a => CustomSqlExt.CountBits(a.Flags))
转译为
SELECT TOP 1 [dbo].[CountBits](a.[Flags]) as1 FROM [Table] a
Beta Was this translation helpful? Give feedback.
All reactions