我有一个导入结果的数据库。数据库是可交付的,我没有自己进行导入,也无法访问原始数据来自己进行导入。也就是说,有一个整数值被导入到文本数据类型中。所有存储的值都是有效整数。我不断得到:
Explicit conversion from data type text to int is not allowed.
如果我尝试更改表中的字段数据类型。我还在表中创建了一个新的 INT 字段,并尝试根据 TEXT 字段中的值更新它,但收到相同的错误。最后,我尝试创建一个新表并尝试插入旧值,但无法成功转换或转换为 int 。
这似乎有效:CONVERT(INT, CONVERT(VARCHAR(MAX),myText))
Edit:
我不完全确定内部转换的最佳选择是什么......选择其中之一VARCHAR(N)
with N > 10
or VARCHAR(MAX)
具有不通过截断来防止溢出的优点(假设在这种情况下溢出是首选行为)。
另外,转换为INT
似乎将前导空格视为零。所以VARCHAR(MAX)
减少错误地得到零的机会。例如。:
CREATE TABLE #foo ( bar TEXT )
INSERT INTO #foo
VALUES (' 10')
SELECT CONVERT (INT, CONVERT(VARCHAR(MAX),bar)) FROM #foo -- 10
SELECT CONVERT (INT, CONVERT(VARCHAR(10),bar)) FROM #foo -- 0
最好的办法可能是进行一些验证,以确保输入满足您的要求。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)