Questions tagged «varchar»

通常指的是可变长度的字符串数据类型。

5
写入varchar和nvarchar之间的差异
当前在SQL Server 2012数据库中,我们正在使用varchar,并且我们想要更改它nvarchar。我已经生成了一个脚本来做到这一点。 我的问题是,SQL Server在写入varchar列与写入列方面有什么区别nvarchar?我们有许多我关心的后端程序。 编辑: 不确定是否有帮助,但是列没有索引,f / k或约束。



3
Transact-SQL查询中字符串前的N前缀
请问我什么时候应该在Transact-SQL查询中的字符串前使用N前缀?我开始使用这样的查询无法获得任何结果的数据库 SELECT * FROM a_table WHERE a_field LIKE '%а_pattern%' 直到我将模式更改为N'%а_pattern%'。我从不需要在以前添加此前缀,所以我很好奇。a_field被定义为nvarchar(255),但我认为原因是其他原因。

2
MySql中的VARCHAR字段上可能的INDEX
我正在使用这样的表在MySql数据库中工作: +--------------+ | table_name | +--------------+ | myField | +--------------+ ...并且我需要进行很多这样的查询(列表中有5-10个字符串): SELECT myField FROM table_name WHERE myField IN ('something', 'other stuff', 'some other a bit longer'...) 大约有24.000.000个唯一行 1)我应该使用FULLTEXTor或and INDEX键VARCHAR(150)吗? 2)如果我将字符数从150增加到220或250 ...会产生很大的不同吗?(有什么方法可以计算出来吗?) 3)正如我所说,它们将是唯一的,因此myField应该是PRIMARY KEY。在已经是VARCHAR INDEX / FULLTEXT的字段中添加PRIMARY KEY难道不是很罕见吗?

4
是否应向VARCHAR列添加任意长度限制?
根据PostgreSQL的文档VARCHAR,VARCHAR(n)和之间没有性能差异TEXT。 我应该在名称或地址列中添加任意长度限制吗? 编辑:不是欺骗: 当所有值均为36个字符时,使用char vs varchar可以使索引查找明显更快 我知道这种CHAR类型是过去的遗迹,我不仅对性能感兴趣,而且对诸如Erwin的其他利弊也很感兴趣。

1
当所有值均为36个字符时,使用char vs varchar可使索引查找明显更快
我有一个旧式架构(免责声明!),它对所有表(有很多)的主键使用基于哈希的生成ID。这样的ID的示例是: 922475bb-ad93-43ee-9487-d2671b886479 改变这种方法没有希望,但是索引访问的性能很差。撇开原因,这可能是无数的,有一件事我注意到,似乎不太理想-尽管是长度正好36个字符的所有许多表中的所有ID值,列类型是varchar(36),不是 char(36)。 除了将每个索引页的条目数量增加很少之外,将列类型更改为固定长度是否会char(36)带来任何显着的索引性能优势? 即在处理固定长度类型时,postgres的执行速度是否比可变长度类型快? 请不要提及微不足道的存储节省-与更改色谱柱所需的手术相比,这已不再重要。

1
Varchar(max)字段会截断8000个字符后的数据
我有一个字段来存储一些数据,该字段声明为varchar(max)。据我了解,这应该存储2^31 - 1字符,但是当我输入一些超过8000个字符的内容时,它将切断其余字符。 我已经验证了所有数据都包含在我的更新语句中,并且该查询在其他任何地方都看起来不错,但是当我选择回退数据时,该查询已被切断。 当我在网站上显示数据时,以及使用SSMS时,数据都会被截断select content from table。 select DATALENGTH (content) from table 回到8000。 我使用此设置数据:update table set content = 'my long content' where id = 1。内容中确实包含很多HTML,但是我看不到这会引起问题。我可以看到我做的唯一的事情就是更换所有"有'',因为这是用户输入的内容(不记得我为什么现在)。 我确实设法通过删除内容中的所有单引号来使内容正确输入,所以我认为我的数据而不是数据库出现了一些奇怪的情况。 我应该对查询使用varchar(max)字段做一些特殊的事情吗? 使用:SQL Server 2008(10.50)64位。

2
为什么LEN()函数严重低估了SQL Server 2014中的基数?
我有一个带有字符串列和谓词的表,该谓词检查具有一定长度的行。在SQL Server 2014中,无论我要检查的长度如何,我都会看到1行的估计。这产生了非常糟糕的计划,因为实际上有成千上万甚至上百万的行,并且SQL Server选择将此表放在嵌套循环的外侧。 对于SQL Server 2014的基数估计为1.0003,而SQL Server 2012的基数估计为31,622,是否有解释?有没有好的解决方法? 以下是问题的简短摘要: -- Create a table with 1MM rows of dummy data CREATE TABLE #customers (cust_nbr VARCHAR(10) NOT NULL) GO INSERT INTO #customers WITH (TABLOCK) (cust_nbr) SELECT TOP 1000000 CONVERT(VARCHAR(10), ROW_NUMBER() OVER (ORDER BY (SELECT NULL))) AS cust_nbr FROM master..spt_values v1 CROSS …

2
使用MAX文字或更具体的小字体
有人正在查看我的DDL代码以创建表,并提出了建议,当他们看到我看到使用VARCHAR(256)文本字段时,我希望它很小,例如名字或其他名称,我应该始终使用VARCHAR(MAX)并链接为什么使用varchar(max )。我读了它,但它似乎过时了,因为它专注于2005年,并且似乎没有提供任何真正的理由在所有文本字段上每行可能分配多达2 GB的空间。 从性能,存储等方面来看,应该如何决定是否VARCHAR(MAX)对现代版本的SQL Server 使用或更小的更具体的类型?(例如,2008、2012、2014)

4
设置varchar(8000)有什么后果?
由于varchar占用的磁盘空间与字段大小成正比,因此是否有任何原因为什么我们不总是将varchar定义为最大值,例如varchar(8000)在SQL Server上? 在创建表上,如果我看到有人在做什么,varchar(100)我应该告诉他们不,你错了,你应该怎么做varchar(8000)?

1
Postgresql的字符大小限制
postgresql中各种数据类型的大小限制是多少?我在某处看到character varying(n),varchar(n) n必须在1到10485760之间。是这样吗? 什么是有效的尺寸character(n),char(n)和text?

3
varchar(255)还是varchar(256)?
我应该使用表格varchar(255)还是varchar(256)设计表格?我听说一个字节用于列的长度或存储元数据。 现在重要吗? 我在互联网上看到了一些帖子,但是它们适用于Oracle和MySQL。 我们拥有Microsoft SQL Server 2016企业版,它如何应用于此环境? 现在说,例如,如果我告诉客户保留文本描述为255个字符而不是256个字符,会有什么区别吗?我读到的内容“最大长度为255个字符的DBMS可以选择使用单个字节来指示字段中数据的长度。如果限制为256或更大,则将需要两个字节。” 这是真的?

3
缩小VARCHAR列的大小有什么意义吗?
到处搜寻有关VARCHAR2Oracle 的列大小是否影响性能的报告似乎不一。 我想VARCHAR稍微谈谈大小问题,并希望对此有所了解: 给定要存储在(Oracle)数据库中的(多行)自由文本字段(不是名称之类的简短内容),在没有达到最大VARCHAR容量(VARCHAR2(4000)在Oracle上)的情况下(在性能或其他方面)有什么意义(选择Oracle)较小的值,例如1024或512,因为无论如何在98%的情况下,这可能就足够了。

2
将VARCHAR转换为VARBINARY
我一直将昂贵的运行查询及其查询计划记录在一个表中,以使我们能够监视性能趋势并确定需要优化的领域。 但是,到了查询计划占用太多空间的地步(因为我们针对每个查询存储整个计划)。 因此,我试图通过将QueryPlanHash和QueryPlan提取到另一个表来规范化现有数据。 CREATE TABLE QueryPlans ( QueryPlanHash VARBINARY(25), QueryPlan XML, CONSTRAINT PK_QueryPlans PRIMARY KEY ( QueryPlanHash ) ); 因为query_plan_hashin 的定义sys.dm_exec_query_stats是一个二进制字段(并且我将定期插入新数据),所以我VARBINARY在新表中使用了该数据类型。 但是,下面的插入失败... INSERT INTO QueryPlans ( QueryPlanHash, QueryPlan ) SELECT queryplanhash, queryplan FROM ( SELECT p.value('(./@QueryPlanHash)[1]', 'varchar(20)') queryplanhash, QueryPlan, ROW_NUMBER() OVER (PARTITION BY p.value('(./@QueryPlanHash)[1]', 'varchar(20)') ORDER BY DateRecorded) rownum FROM …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.