我正在我的学校使用一个小型网络应用程序的数据库SQL Server 2005.
我在varcharvs 的问题上看到了几个思想流派nvarchar:
varchar除非你处理了很多国际化的数据,然后使用nvarchar.nvarchar用于一切.我开始看到视图2的优点.我知道nvarchar确实占用了两倍的空间,但这不一定是一个大问题,因为这只是为几百名学生存储数据.对我而言,似乎最简单的是不要担心它并且只允许一切使用nvarchar.还是有什么我想念的?
默认情况下 - Microsoft SQL Server中数据库的字符编码集是什么?
如何在SQL Server中查看当前字符编码?
法语和西班牙语中有特殊字符,不能用于普通英语(重音元音等).
varchar中是否支持这些字符?或者我需要nvarchar吗?
(注:我不希望在我是否应该使用为nvarchar或varchar的讨论.)
我今天在客户数据库中遇到了一个奇怪的情况.SQL Server 2005,数据库排序规则不区分大小写,因此我可以使用任何案例编写SQL查询,没有任何问题......除了一个.在一个特定的表中,一个特定的列称为"DeadZone".如果我这样查询:'从TableName中选择Deadzone' - 我得到一个未找到列的错误,如下所示:'从TableName中选择DeadZone' - 它有效.现在是踢球者,像这样:'从TableName中选择deadZone' - 它有效!
因此,只有列名中的"Z"区分大小写!我在同一个表中创建了一个类似的列名,其中包含一个"Z",该列不区分大小写.
有任何想法吗?我确信我可以通过删除和重新添加列来解决这个问题,但是最好能够深入了解这一列.顺便说一下,这个数据库是在匈牙利的个人电脑上进行的,那么一些匈牙利特有的角色问题是否可能导致这种情况呢?记住,其中带有"Z"的另一个列名称没有相同的问题.
-Graeme
我正在构建一个网站,其中可能包含客户端未指定的 unicode 字符,我想使用 nvarchar 作为 sql 服务器上的数据类型。使用 nvarchar 相对于 varchar 有什么缺点吗?
如果 nvarchar 可以容纳比 varchar 更多的字符,为什么有人会想使用 varchar 而不是 nvarchar。使用 nvarchar 的唯一缺点是 nvarchar 中的数据比 varchar 中的数据更大吗?
另外,Nvarchar 还可以存储 varchar 存储的所有字符吗?
所以这可能只是我对程序的了解不够,但我正在尝试创建一个更新表中的列以删除尾随空格的过程,因为它是我们最近在工作中经常出现的.
这是因为我们处于从旧系统到新系统的过渡阶段,因此我们还建立了一个新的数据库.旧数据库使用nvarchar nchar,这意味着即使您不使用所有插槽的字符,它也会用空格填充其余的插槽.在新数据库中虽然我们使用varchar所以我们想摆脱空白!
所以这非常方便:
UPDATE table SET column = LTRIM( RTRIM( column ) );
Run Code Online (Sandbox Code Playgroud)
所以我试图制作一个程序,因为我们必须偶尔使用它:
USE omitted
GO
CREATE PROCEDURE TrimTrailingSpaces
@table VARCHAR(50),
@column VARCHAR(50)
AS
BEGIN
UPDATE @table
SET
@column = LTRIM( RTRIM( @column ) );
END
GO
Run Code Online (Sandbox Code Playgroud)
但每当我尝试执行此操作时,我都会收到错误消息:
Msg 1087,Level 16,State 1,Procedure TrimTrailingSpaces,Line 6 [Batch Start Line 2]:必须声明表变量"@table".
我正在做什么是不可能的?