在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
Uh oh!
There was an error while loading. Please reload this page.
-
在特定情形下,结合位操作的思想去设计数据结构(表列),可以降低复杂度、存储成本并提高性能。
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