sql server 插入binary数据

twb222 2012-06-04 09:20:37
插入
insert into [dbo].[t_binary]([key], [binarychr]) values('003', 0x1189)
查询
select [key],CONVERT(binary(10), [binarychr]) from [t_binary]
结果
003 0x11202020202020202020

为什么插入0x1189,结果变成0x1120了?
其中:binarychr char(10)
...全文
386 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
bean_sql 2012-06-04
  • 打赏
  • 举报
回复
嗯,参考下叶子的第二个脚本,
看能否改下数据类型....
twb222 2012-06-04
  • 打赏
  • 举报
回复
不是要插入一个字符串‘0x1189’,而就是插入binary 0x1189,不过好像确实不行啊。
houyajin 2012-06-04
  • 打赏
  • 举报
回复
不能直接插入带引号的,查询时候不类型转换么?
bean_sql 2012-06-04
  • 打赏
  • 举报
回复

if OBJECT_ID('t_binary','u') is not null drop table t_binary
go
create table t_binary([key] char(10), [binarychr] char(10))

insert into [dbo].[t_binary]([key], [binarychr])
--插入数据时,做下转换
select'003',convert(varchar(10),'0x1189')
select [key], [binarychr] from [t_binary]
/*
(1 row(s) affected)
key binarychr
---------- ----------
003 0x1189

(1 row(s) affected)
*/
叶子 2012-06-04
  • 打赏
  • 举报
回复
叶子 2012-06-04
  • 打赏
  • 举报
回复
直接把0x1189当字符按插入就不变了。

当数据从字符串数据类型(char、varchar、nchar、nvarchar、binary、varbinary、text、ntext 或 image)转换为不同长度的 binary 或 varbinary 数据类型时,SQL Server 将在数据的右侧填充或截断数据。
从其他数据类型转换为 binary 或 varbinary 时,将在数据的左侧填充或截断数据。
填充将通过使用十六进制的零来完成。
twb222 2012-06-04
  • 打赏
  • 举报
回复
0x1189 插入char型 有保持不变的办法吗?
叶子 2012-06-04
  • 打赏
  • 举报
回复
因为做了类型转换。


create table t_binary([key] char(10), [binarychr] char(10))

insert into [dbo].[t_binary]([key], [binarychr]) values('003', 0x1189)

select [key],CONVERT(binary(10), [binarychr]) from [t_binary]
/*
003 0x11202020202020202020
*/


create table t_binary1([key] char(10), [binarychr] binary(2))

insert into [dbo].[t_binary1]([key], [binarychr]) values('003', 0x1189)

select [key],[binarychr] from [t_binary1]
/*
key binarychr
---------- ---------
003 0x1189
*/

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧