2016-04-20 138 views
1

当我试图运行查询:SELECT命令:字符串或二进制数据将被截断

SELECT id 
FROM tbl_MessageData 
WHERE data LIKE 'very_long_text' 

我得到的错误:

String or binary data would be truncated

数据字段定义为Text并且我成功地将“very_long_text”(实际文本大约为10000个字符长度)插入其中。

+3

'tex'是一种从产品中删除的古老数据类型。你应该切换到'varchar(max)'或'nvarchar(max)'。 –

+2

为什么你的where子句中有一个varchar参数值很大,尤其是''like'子句?这就是通配符。在特定点之后自行截断该值,并在末尾添加%符号。 'WHERE data LIKE'beginning_of_very_long_text%'' – Igor

+0

当你已经说过你已经成功地将值插入数据字段时,你如何得到一个基本上告诉你的错误“这不适合在这里”?此错误仅在更新或插入时或在您的案例中引发,因为您正在比较实际字段的值太大的值。请提供更多信息。 – Dresden

回答

1

您只能在查询中使用8000个字符。文本数据类型将在未来版本的Microsoft SQL Server中删除,而不是使用varchar或nvarchar。

你可以看到你的专栏信息:

SELECT column_name, data_type, character_maximum_length  
FROM information_schema.columns 
WHERE table_name = 'YourTable' 

您需要修改列大小是这样的:

Alter table tbl_MessageData 
ALTER COLUMN data VARCHAR(max) NOT NULL 

比你可以试试:

SELECT id 
FROM tbl_MessageData 
WHERE data LIKE 'very_long_text' 
+0

如果我将LIKE更改为'=',我将其更改为VARCHAR(max),并且该查询仅适用于(在SQL Server上)。不幸的是,我不能这样做,因为我用python执行查询,并且出现错误“数据类型varchar(max)和文本在等于运算符中不兼容。” –

+0

@ShaniGamrian http://stackoverflow.com/questions/20180766/the-data-types-varcharmax-and-text-are-incompatible-in-the-equal-to-operator – Dejan

+0

我试过使用LIKE,它没有使用非常长的字符串(甚至在更改为VARCHAR之后)。此外,我不再使用文本,所以我不明白为什么我甚至会得到这个错误。 –

相关问题