SQL Server 将整数转换为二进制字符串

2023-11-25

我想知道 SQL 中是否有一种简单的方法可以将整数转换为其二进制表示形式,然后将其存储为 varchar。

例如,5 将转换为“101”并存储为 varchar。


实际上,使用普通的旧 SQL 非常简单。只需使用按位与即可。我有点惊讶的是,网上没有发布一个简单的解决方案(不涉及 UDF)。就我而言,我真的想检查位是否打开或关闭(数据来自 dotnet eNums)。

因此,这里有一个例子,它将分别和一起为您提供位值和二进制字符串(大联合只是生成可跨数据库工作的数字的一种黑客方法:

    select t.Number
    , cast(t.Number & 64 as bit) as bit7
    , cast(t.Number & 32 as bit) as bit6
    , cast(t.Number & 16 as bit) as bit5
    , cast(t.Number & 8 as bit) as bit4
    , cast(t.Number & 4 as bit) as bit3
    , cast(t.Number & 2 as bit)  as bit2
    ,cast(t.Number & 1 as bit) as bit1

    , cast(cast(t.Number & 64 as bit) as CHAR(1)) 
    +cast( cast(t.Number & 32 as bit) as CHAR(1))
    +cast( cast(t.Number & 16 as bit)  as CHAR(1))
    +cast( cast(t.Number & 8 as bit)  as CHAR(1))
    +cast( cast(t.Number & 4 as bit)  as CHAR(1))
    +cast( cast(t.Number & 2 as bit)   as CHAR(1))
    +cast(cast(t.Number & 1 as bit)  as CHAR(1)) as binary_string
    --to explicitly answer the question, on MSSQL without using REGEXP (which would make it simple)
    ,SUBSTRING(cast(cast(t.Number & 64 as bit) as CHAR(1)) 
                    +cast( cast(t.Number & 32 as bit) as CHAR(1))
                    +cast( cast(t.Number & 16 as bit)  as CHAR(1))
                    +cast( cast(t.Number & 8 as bit)  as CHAR(1))
                    +cast( cast(t.Number & 4 as bit)  as CHAR(1))
                    +cast( cast(t.Number & 2 as bit)   as CHAR(1))
                    +cast(cast(t.Number & 1 as bit)  as CHAR(1))
                    ,
                    PATINDEX('%1%', cast(cast(t.Number & 64 as bit) as CHAR(1)) 
                                        +cast( cast(t.Number & 32 as bit) as CHAR(1))
                                        +cast( cast(t.Number & 16 as bit)  as CHAR(1))
                                        +cast( cast(t.Number & 8 as bit)  as CHAR(1))
                                        +cast( cast(t.Number & 4 as bit)  as CHAR(1))
                                        +cast( cast(t.Number & 2 as bit)   as CHAR(1))
                                        +cast(cast(t.Number & 1 as bit)  as CHAR(1)  )
                    )
,99)


from (select 1 as Number union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 
    union all select 7 union all select 8 union all select 9 union all select 10) as t

产生这样的结果:

num  bit7 bit6 bit5 bit4 bit3 bit2 bit1 binary_string   binary_string_trimmed 
1    0    0    0    0    0    0    1    0000001         1
2    0    0    0    0    0    1    0    0000010         10
3    0    0    0    0    0    1    1    0000011         11
4    0    0    0    1    0    0    0    0000100         100
5    0    0    0    0    1    0    1    0000101         101
6    0    0    0    0    1    1    0    0000110         110
7    0    0    0    0    1    1    1    0000111         111
8    0    0    0    1    0    0    0    0001000         1000
9    0    0    0    1    0    0    1    0001001         1001
10   0    0    0    1    0    1    0    0001010         1010
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL Server 将整数转换为二进制字符串 的相关文章

随机推荐

  • maven中的多次部署

    我们有一个内部工件存储库 目前所有快照都将部署在那里 我们还希望拥有一个具有 Web 界面的不同服务器 并希望将创建的工件复制到其中 对于我们的构建 我们使用 Hudson 但是构建后操作 将工件部署到 Maven 存储库 与 scp 一起
  • LATERAL JOIN 不使用三元组索引

    我想使用 Postgres 对地址进行一些基本的地理编码 我有一个地址表 其中包含大约 100 万个原始地址字符串 gt d addresses Table public addresses Column Type Modifiers ad
  • pandas 箱线图中共享轴的不同 ylim

    我有一个分组的 pandas 箱线图 排列在 2 2 网格中 import pandas as pd import numpy as np import matplotlib pyplot as plt df pd DataFrame np
  • 如何在批处理文件或 C# 中等待任务计划程序任务完成?

    我正在尝试编写一个执行两件事的批处理文件 首先 它启动一个安装程序 install exe 用于安装程序 program exe 其次 它启动已安装程序的实例 program exe 这必须在安装完成后执行 这相对简单 只是安装程序需要管理
  • 如何获取与 data.frame 或距离矩阵中给定值匹配的单元格的行号和列号?

    当我有一个距离矩阵 或基于矩阵的数据框 时 如何获取与给定值对应的行和列 Example df lt data frame x c 11 20 y c 12 21 dst lt dist df 输出 1 2 3 4 5 6 7 8 9 2
  • 当用户尝试在 iOS 中打开电子邮件附件时如何显示“打开方式...”

    我见过一些iOS应用程序有这个功能 当用户尝试打开电子邮件附件时 他们可以按住附件几秒钟 然后会出现一个弹出菜单 其中显示两个按钮 一个按钮显示 在 iBooks 中打开 例如 当用户单击它时 应用程序将运行并打开附件 我想知道如何注册我的
  • .NET GDI+ 中的字体大小差异?

    我正在绞尽脑汁地试图理解用户选择或指定的字体大小之间的差异 例如 使用字体对话框 和 em 大小报告Font NET 中的类 例如 using FontDialog dlg new FontDialog if dlg ShowDialog
  • 使用LIKE语句进行过滤

    我使用此代码来过滤我的表 Table Filtered False Table Filter Field Search LIKE Edit Search Text Table Filtered True 但它引发了这个异常 操作不适用 问题
  • 条形图/线图位于同一图上,但条形图前面的轴和线图不同

    我正在使用 pandas 来绘制一些数据 如果我绘制这个 import pandas as pd import matplotlib pyplot as plt df pd DataFrame a 100 200 150 175 b 430
  • Heroku 上的 Discord 机器人抛出错误:agent ??= new https.Agent

    这与我的第一个问题有关 我更新了所有代码 在我的bot js is require dotenv config let ver process env DISCORD BOT client once ready async gt if ve
  • java中输出json文档中叶子节点的所有路径列表

    例如 给定这个 json 文档 store book category reference author Nigel Rees title Sayings of the Century price 8 95 category fiction
  • 如何按 NAN 值分割 pandas 时间序列

    我有一个 pandas TimeSeries 如下所示 2007 02 06 15 00 00 0 780 2007 02 06 16 00 00 0 125 2007 02 06 17 00 00 0 875 2007 02 06 18
  • oracle 将 DD-MON-YY 转换为 DD/MM/YYYY

    我正在尝试将 varchar2 列的格式从 转换为日 月 年 to 日 月 年 例如 来自 2016 年 1 月 1 日 to 2016年1月1日 如果您可以询问或可能有帮助 MON 部分是英语 但我当前的 NLS 设置是土耳其语 所有年份
  • 无效操作:类型接口{}不支持索引

    我是 golang 新手 在读取嵌套 JSON 响应时遇到问题 var d interface json NewDecoder response Body Decode d test d data map string interface
  • R 中的循环效率低下

    早上好 我已经在 R 中进行了几个月的开发 我必须确保我的代码的执行时间不会太长 因为我分析大数据集 因此 我一直在尝试尽可能多地使用向量化函数 然而 我仍然想知道一些事情 R中代价高昂的不是循环本身吗 我的意思是 当您开始修改循环内的变量
  • 检查 9.30 到 4 ruby​​ 之间的时间

    我有一个错误地生成它的代码 我认为必须有更好的方法来检查时间 gt 9 30 am 和时间 def checkTime goodtime false if Time now hour gt 9 and Time now min gt 30
  • maven-surefire-report-plugin不生成surefire-report.html

    我无法获取maven surefire 报告插件生成Surefire report html当我跑步时 mvn clean deploy site mvn clean site mvn site mvn clean install site
  • 在 MySQL 的文本列中搜索字符串

    我有 mysql 表 其中有一列将 xml 存储为字符串 我需要找到 xml 列包含给定 6 个字符的字符串的所有元组 其他都不重要 我只需要知道这 6 个字符的字符串是否存在 因此 文本格式为 xml 可能并不重要 问题 如何在mysql
  • 在 Excel 单元格中创建超链接?

    是否可以在 Excel 单元格中创建仅使用单元格文本的一部分作为可点击链接的超链接 IE 下表模型是否代表可以在 Excel 2010 中轻松构建的内容 模拟http dl dropbox com u 14119404 misc Micro
  • SQL Server 将整数转换为二进制字符串

    我想知道 SQL 中是否有一种简单的方法可以将整数转换为其二进制表示形式 然后将其存储为 varchar 例如 5 将转换为 101 并存储为 varchar 实际上 使用普通的旧 SQL 非常简单 只需使用按位与即可 我有点惊讶的是 网上