Sql server 在sql中的标识列中存储十六进制等效值

Sql server 在sql中的标识列中存储十六进制等效值,sql-server,sql-server-2008,tsql,hex,sql-server-2012,Sql Server,Sql Server 2008,Tsql,Hex,Sql Server 2012,正如标题所说,如果我有一个表,它的结构如下 create table myTable ( ID int identity(1,1) not null, col1 varchar(20) not null, col2 varchar(20) not null constraint pk_myTable primary key (ID) ) 如果我在此表中插入一些值,它将自动获取colID中的值。我想知道的是一种让SQLServer在列中存储十六进制等价物的方法。例如,对于1,它应该将0x012存

正如标题所说,如果我有一个表,它的结构如下

create table myTable
(
ID int identity(1,1) not null,
col1 varchar(20) not null,
col2 varchar(20) not null
constraint pk_myTable primary key (ID)
)
如果我在此表中插入一些值,它将自动获取col
ID
中的值。我想知道的是一种让SQLServer在列中存储十六进制等价物的方法。例如,对于1,它应该将
0x01
2存储为0x02
<代码>10为0xA等等

我不想知道任何技巧或其他东西,我知道我可以创建这个col作为
varchar
,然后为insert创建一个过程,或者为insert创建一个触发器,这将执行所需的转换并产生所需的结果,这不是一个大问题


但我想知道的是,有一个内置的函数/过程/触发器可以帮助我实现我想要实现的目标吗?不一定在SQL Server 2008中,但可能在2012年,是否存在类似的情况?

我同意上面Joe Stefanelli和Habo的观点,您不需要这样做。也就是说,该技术在其他场景中也很有用

如下定义表(注意计算列)

然后填充它

INSERT INTO mytable(col1,col2) 
SELECT 'col1 - 1','col2 - 1'
UNION SELECT 'col1 - 2','col2 - 2'
UNION SELECT 'col1 - 3','col2 - 3'
UNION SELECT 'col1 - 4','col2 - 4'
然后,无论何时从表中选择,它都将包含十六进制值

SELECT * FROM mytable


如果计算出的值要昂贵得多,则可以将该列标记为持久化。然后,数据库将物理存储该值,并在适当时进行更新。

它将
INT
存储为二进制文件,这是否会困扰您?您需要的是格式化显示的值。看看。你为什么觉得需要控制SQL如何存储这个值?它有什么作用?
SELECT * FROM mytable