Vin*_*mes 7 sql-server sql-server-2008-r2
我有一个导入的数据库.数据库是可交付的,我自己没有进行导入,也没有自己访问原始数据.话虽如此,有一个整数值导入到text数据类型.所有存储的值都是有效的整数.我一直在:
Explicit conversion from data type text to int is not allowed.
Run Code Online (Sandbox Code Playgroud)
如果我尝试更改表中的字段数据类型.我还在表中创建了一个新的INT字段,并尝试根据TEXT字段中的值更新它,但是我收到了同样的错误.最后,我尝试创建一个新表并尝试插入旧值但无法成功转换或转换为int.
Tim*_*man 15
这似乎有效: CONVERT(INT, CONVERT(VARCHAR(MAX),myText))
编辑:
我不能完全确定什么是用于内部转换的最佳选择......要么选择VARCHAR(N)与N > 10或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
Run Code Online (Sandbox Code Playgroud)
可能最好的做法是进行一些验证,以确保输入符合您的要求.
小智 5
无法将TextValue转换为Int直接转换
convert(int, (convert( varchar(max),'TextValue'))) as ColumnName
Run Code Online (Sandbox Code Playgroud)