- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在使用多个内存表来缓存我网站的数据。这是我的 mac 上的本地 Web 主机和 linux 上的开发服务器,在 php 5.5 上使用 mssql php 库
一个简化的表格如下:
CacheID INT NOT NULL
CacheData VARCHAR(MAX)
我偶尔会插入几个大值。 10,000 多个字符。插入工作正常。一个简单的查询告诉我所有数据都在字段中:
SELECT
CacheID,
LEN(CacheData)
FROM Caches
但是,当我实际选择数据时,cache
列总是被截断为 8192 个字符,从而导致出现问题。简单选择:
SELECT
CacheData
FROM Caches
WHERE CacheID = 10
我检查了 varchar(max) 字符限制。它远远超过 8192。2^32 - 1
为什么数据被截断了?
另一种形式的问题。我实际上遇到了这个agian并忘记了这个解决方案。花了我一点时间来记住,因为我忘记了根本原因。这是我认为 SQL Server 是罪魁祸首的搜索结果。
什么是 SQL Servers Varchar(MAX) 最大长度? - 如果您的值被截断,它可能是由 php 非 sql server 引起的。如果你只想知道最大值是多少,问题在这里得到解答:Maximum size of a varchar(max) variable
最佳答案
回答我自己的问题。只是将它发布在这里,因为我花了一个多小时来解决这个问题,如果能有一个直截了当的答案就好了。我在堆栈溢出上看到过类似的问题,但它们非常针对某个用例,或者措辞糟糕,无法通过搜索结果找到
用于 php 的 mssql 模块在 php.ini 文件中有几个默认设置。其中一项设置是 mssql.textlimit
和 mssql.textsize
。这些设置会将任何基于文本的字段(varchar、text、nvarchar)截断为它们设置的大小。
我看到截断是在 8192 和 4096 上的帖子。所以我假设其中任何一个都可以是默认值。我将我的提高到 65535 (2^16 - 1)。
我最近开始迁移到 PDO,发现 mssql 直接回答不适用于 pdo。
PDO 似乎有一个错误 ( not a bug but kind of a bug ) 将文本限制硬编码为 64 kb。您可以通过在长查询之前传递以下查询来覆盖它:SET TEXTSIZE -1
。
作为旁注,我也看到了类似的问题,专门针对 SQL Server Management Studio 中的查询结果。对于可以显示或导出的字符数,程序中存在一些限制。程序中还有一些设置可以编辑显示/导出的字符数。有关此问题的更多信息 here .
关于php - 为什么 SQL Server 选择查询截断 varchar 字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31593684/
我在 presto 中有表,名为(“mappings”)的列将键值对作为字符串 从 hello 中选择映射; 例如:{“foo”:“baar”,“foo1”:“bar1”} 我想将“映射”列转换为 M
我总是会在表格的特定列中输入 20 个字符的内容。 我需要此列是唯一的。 如果我将此列设置为 varchar(255) 而不是 varchar(20),SELECT 查询的速度会有任何差异吗? (输入
我在 the Dapper .NET project home page 上发现了以下评论. Dapper supports varchar params, if you are executing
我有以下代码。 Case 语句将列出的数字转换为文本并将其余代码转换为 NULL,但我不断收到以下错误:将 VARCHAR 值“RDG5”转换为数据类型 INT 时转换失败。 RDG5 是被转换为 N
运行此脚本时出现以下错误。我尝试过使用以下内容:整理 Latin1_General_CI_AS。请问可以排序吗?谢谢 Msg 457, Level 16, State 1, Line 8 Implic
是否可以将 SQL Server 2008 数据库中的列类型从 varchar(255) 更改为 varchar(MAX),而无需删除表并重新创建? 每次我尝试使用它来执行此操作时,SQL Serve
每次我对选择 varchar(max) 或 varchar(fix) 数据类型感到困惑。假设我有一个大约 5000 个 varchar 的数据列。列不是 null 类型。 我应该将其设置为 varch
您好,我遇到问题,我的 friend 拒绝更改字段的数据类型,所以我在使用 order by 时遇到问题,这里是示例数据 04-07-2016(mm-dd-yyyy) 和字段名称名为 regis_da
对于文字游戏,我正在尝试向 VARCHAR 数组添加 CHECK 约束: CREATE TABLE words_games ( gid SERIAL PRIMARY KEY,
我有一个 varchar 字段,其内容如下: a,b,c,d e,d,a,c b,q,d,e 我需要执行一个查询,仅选择具有与输入字符串相等的元素的字段的行。 前输入:c,a 选择的行: a,b,c,
大家好,我计划创建包含 10 列的表,该表应该至少有 10,000,000 行,并且在其中,我将有列 description - VARCHAR(600) 和索引。 所以问题是,在该列上查询 LIKE
我读过这个question关于MySQL中VARCHAR(254)和VARCHAR(255)的区别。 HiveQL 中是否有必须考虑的类似内容?也许 HiveQL 实现了一些类似于 MySQL 的存储
在 MySQL 中,VARCHAR(1024) 和 VARCHAR(512) 有什么区别?如果我的项目永远不会超过 512 个字符,那么使用 VARCHAR(1024) 我会失去什么? 最佳答案 不知
由于 Varchar 字段的存储要求基于输入的字符串的实际长度,将每个 Varchar 字段指定为最大可能的缺点是什么:Varchar (65535)?那么,除了最大字段 > 255 个字符的 1 个
我正在尝试搜索具有数据类型 map(varchar,varchar) 的列。现在访问列的一种方法是使用这个结构,name_of_column[' key '],它将给出该键的值。但我想知道什么是可能的
快速提问。如果我将使用十进制字段限制或十六进制(比如 16、32、64 而不是 10、20、50),从存储数据的角度来看是否重要? 我问是因为我想知道这是否与 HDD 上的集群有关? 谢谢! 最佳答案
我发现我可以写 SELECT CAST(Min(mynumber) AS VARCHAR(Max))+'mystring' AS X 作为 SELECT CAST(Min(mynumber) AS V
我必须将字符串“johnmelling”值插入到列为 的表中[用户密码] varbinary NOT NULL。 请有人建议我,插入“johnmelling”的最佳转换是什么? 我尝试插入如下, In
我已经在 MSDN 论坛和此处阅读了此内容,但仍然不清楚。我认为这是正确的: Varchar(max) 将存储为文本数据类型,因此有缺点。假设您的字段可靠地少于 8000 个字符。就像我的数据库表中的
我有一个这样描述的表: mysql> describe easy_table; +---------------------+--------------+------+-----+---------
我是一名优秀的程序员,十分优秀!