除CHAR (CHARACTER)和VARCHAR (CHARACTER VARYING) ,SQL还提供NCHAR (NATIONAL CHARACTER)和NVARCHAR (NATIONAL CHARACTER VARYING)types。 在一些数据库中,这是用于字符(非二进制)string的更好的数据types: 在SQL Server中, NCHAR以UTF-16LE存储,是唯一能够可靠地存储非ASCII字符的方法, CHAR仅为单字节代码页; 在Oracle中, NVARCHAR可以存储为UTF-16或UTF-8而不是单字节整理; 但在MySQL中, NVARCHAR是VARCHAR ,所以没有区别,任何一种types都可以使用UTF-8或任何其他sorting规则进行存储。 那么,如果有的话, NATIONAL实际上在概念上是什么意思呢? 供应商的文档只会告诉你他们自己的DBMS使用什么字符集,而不是实际的基本原理。 与此同时,SQL92标准对function的解释甚至不那么有用,只说明NATIONAL CHARACTER存储在一个实现定义的字符集中。 与存储在实现定义的字符集中的单纯的CHARACTER相反。 这可能是一个不同的实现定义的字符集。 或不。 谢谢,ANSI。 Thansi。 是否应该为所有字符(非二进制)存储目的使用NVARCHAR ? 是否有目前stream行的数据库pipe理系统,它会做一些不可取的事情,或只是不认识关键字(或N''文字)?
VARCHAR不存储Unicode字符。 NVARCHAR确实存储Unicode字符。 今天的应用程序应该始终是Unicode兼容的。 NVARCHAR需要两倍的空间来存储它。 第4点并不重要,因为存储空间非常便宜。 Ergo:今天deviseSQL Server数据库时,应该总是使用NVARCHAR。 这是合理的吗? 有没有人不同意任何前提? 今天有什么理由selectVARCHAR over NVARCHAR吗?
当我们必须使用Unicodetypes时,是否有规则? 我已经看到,大多数欧洲语言(德语,意大利语,英语,…)在VARCHAR列的同一个数据库中都很好。 我正在寻找像这样的东西: 如果你有中文 – >使用NVARCHAR 如果你有德语和阿拉伯语 – >使用NVARCHAR 怎么样的服务器/数据库的整理? 我不想像这里所提到的那样总是使用NVARCHAR varchar和nvarchar SQL Server数据types之间的主要性能区别是什么?
在SQL Server中使用nvarchar(max)和NText数据types的优点和缺点是什么? 我不需要向后兼容性,所以在较早的SQL Server版本中不支持nvarchar(max) 。 编辑:显然这个问题也适用于TEXT和IMAGE与varchar(max)和varbinary(max) ,对于那些稍后search这些数据types。
这是SS 2005的。 为什么我只有4000个字符而不是8000个字符? 它在4000处截断string@SQL1。 ALTER PROCEDURE sp_AlloctionReport( @where NVARCHAR(1000), @alldate NVARCHAR(200), @alldateprevweek NVARCHAR(200)) AS DECLARE @SQL1 NVARCHAR(Max) SET @SQL1 = 'SELECT DISTINCT VenueInfo.VenueID, VenueInfo.VenueName, VenuePanels.PanelID, VenueInfo.CompanyName, VenuePanels.ProductCode, VenuePanels.MF, VenueInfo.Address1, VenueInfo.Address2, '' As AllocationDate, '' As AbbreviationCode, VenueInfo.Suburb, VenueInfo.Route, VenueInfo.ContactFirstName, VenueInfo.ContactLastName, VenueInfo.SuitableTime, VenueInfo.OldVenueName, VenueCategories.Category, VenueInfo.Phone, VenuePanels.Location, VenuePanels.Comment, [VenueCategories].[Category] + '' Allocations'' AS ReportHeader, ljs.AbbreviationCode AS PrevWeekCampaign […]
我正在使用SQL Server 2005在我学校的一个小型Web应用程序的数据库上工作。 我在varchar和nvarchar的问题上看到了几个学派: 除非处理大量国际化数据,否则使用varchar ,然后使用nvarchar 。 只要使用nvarchar的一切。 我开始看到视图2的优点了。我知道nvarchar占用了两倍的空间,但这不一定是一笔巨大的交易,因为这只能为数百名学生存储数据。 对我来说,似乎是最简单的,不要担心它,只是允许一切使用nvarchar。 还是有什么我失踪?
我今天在SQL Server(2008R2和2012)中遇到了一个奇怪的问题。 我试图build立一个string使用串联与一个select语句。 我find了解决办法,但我真的很想知道这里发生了什么,为什么它不给我预期的结果。 有人可以向我解释吗? http://sqlfiddle.com/#!6/7438a/1 根据要求,还有代码在这里: — base table create table bla ( [id] int identity(1,1) primary key, [priority] int, [msg] nvarchar(max), [autofix] bit ) — table without primary key on id column create table bla2 ( [id] int identity(1,1), [priority] int, [msg] nvarchar(max), [autofix] bit ) — table with nvarchar(1000) instead of max […]
这只是nvarchar支持多字节字符? 如果是这样的话,除了存储问题之外,真的有什么意义可以使用varchars吗?