2017-03-31 188 views
1

我有一个表应该是nvarchar(8),但意外存储为bigint (8 bytes)。数据现在正在运行。 我需要将bigint数值转换为预期的nvarchar(8)字符串。例如 列值应该是'MOLASSES',但实际上是数值5570755107535144275SQL Server将nvarchar转换为Big Int并返回到nvarchar

任何人都可以帮忙吗?

+3

你不能适合5570755107535144275到8个字符 – Takarii

+0

一个nvarchar场我Takarii同意,而且要列从优化搜索的数据类型转换为字符串任何关节原因。你期待Unicode数据吗? –

+0

当潜在的帮助出现诸如“你为什么要这样做?”之类的问题之前,我经常会感兴趣。等等。它的好处在于提供的帮助将取决于要求的原因。 – user3049876

回答

1

要将bigint转换回varchar,请先将其转换回二进制值。

http://sqlfiddle.com/#!6/3e91f/2

CREATE TABLE BYTESTREAM(VALUE BIGINT NOT NULL); 

INSERT INTO BYTESTREAM VALUES (5570755107535144275); 

SELECT VALUE 
, CONVERT(VARBINARY(8), VALUE) 
, CONVERT(VARCHAR(8), CONVERT(VARBINARY(8), VALUE)) 
FROM BYTESTREAM 
+0

谢谢你。我现在看看解决方案,并认同它很明显。 – user3049876