我需要将数字值作为字符串存储在SQL表中(由于某些ID包含非数字字符),但是如果不使用科学计数法存储它就很难实现这一点,这不是问题如果我可以在视图中进行调整,但这样做会丢失最后几个数字。
我已经尝试过(就像查询一样)将其强制转换为bigint
,然后转换为nvarchar
语句中的INSERT INTO
,但这并不影响它的存储方式
这是我要实现的目标:
CREATE TABLE [dbo].[customer_comp](
[customer_ref] [nvarchar](50) NULL,
[customer_name] [nvarchar](255) NULL
) ON [PRIMARY]
INSERT INTO [customer_comp]
(customer_ref, customer_name)
VALUES
('199000243', 'John Smith'),
('CR-222-3X0D', 'Jane Smith');
预期结果:
+--------------+---------------+
| customer_ref | customer_name |
+--------------+---------------+
| 199000243 | John Smith |
| CR-222-3X0D | Jane Smith |
+--------------+---------------+
我不断得到的结果:
+--------------+---------------+
| customer_ref | customer_name |
+--------------+---------------+
| 1.9900e+003 | John Smith |
| CR-222-3X0D | Jane Smith |
+--------------+---------------+
如果我以完全错误的方式进行此操作,我将以这种方式存储它,因为某些值以“ AAA-NNNA-NNAA”之类的字母数字格式存储,而有些值都是数字“ NNNNNNNN”,因此要求该列接受nvarchar。
答案 0 :(得分:1)
以防万一将来有人偶然发现此问题,您可以INSERT INTO
非常简单,而无需强制转换数据。像下面这样将数值转换为bigint
,然后转换为nvarchar
将导致科学计数形式被存储:
CAST(CAST(customer_ref as bigint) as nvarchar(50))