当我试图运行查询:SELECT命令:字符串或二进制数据将被截断
SELECT id
FROM tbl_MessageData
WHERE data LIKE 'very_long_text'
我得到的错误:
String or binary data would be truncated
数据字段定义为Text
并且我成功地将“very_long_text”(实际文本大约为10000个字符长度)插入其中。
当我试图运行查询:SELECT命令:字符串或二进制数据将被截断
SELECT id
FROM tbl_MessageData
WHERE data LIKE 'very_long_text'
我得到的错误:
String or binary data would be truncated
数据字段定义为Text
并且我成功地将“very_long_text”(实际文本大约为10000个字符长度)插入其中。
您只能在查询中使用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'
如果我将LIKE更改为'=',我将其更改为VARCHAR(max),并且该查询仅适用于(在SQL Server上)。不幸的是,我不能这样做,因为我用python执行查询,并且出现错误“数据类型varchar(max)和文本在等于运算符中不兼容。” –
@ShaniGamrian http://stackoverflow.com/questions/20180766/the-data-types-varcharmax-and-text-are-incompatible-in-the-equal-to-operator – Dejan
我试过使用LIKE,它没有使用非常长的字符串(甚至在更改为VARCHAR之后)。此外,我不再使用文本,所以我不明白为什么我甚至会得到这个错误。 –
'tex'是一种从产品中删除的古老数据类型。你应该切换到'varchar(max)'或'nvarchar(max)'。 –
为什么你的where子句中有一个varchar参数值很大,尤其是''like'子句?这就是通配符。在特定点之后自行截断该值,并在末尾添加%符号。 'WHERE data LIKE'beginning_of_very_long_text%'' – Igor
当你已经说过你已经成功地将值插入数据字段时,你如何得到一个基本上告诉你的错误“这不适合在这里”?此错误仅在更新或插入时或在您的案例中引发,因为您正在比较实际字段的值太大的值。请提供更多信息。 – Dresden