它只nvarchar支持多字节字符吗?如果是这种情况,除了存储问题之外,还有什么意义varchars吗?
我在SQL Server 2005中有以下测试表:
CREATE TABLE [dbo].[TestTable]
(
[ID] [int] NOT NULL,
[TestField] [varchar](100) NOT NULL
)
Run Code Online (Sandbox Code Playgroud)
填充:
INSERT INTO TestTable (ID, TestField) VALUES (1, 'A value'); -- Len = 7
INSERT INTO TestTable (ID, TestField) VALUES (2, 'Another value '); -- Len = 13 + 6 spaces
Run Code Online (Sandbox Code Playgroud)
当我尝试使用SQL Server LEN()函数找到TestField的长度时,它不计算尾随空格 - 例如:
-- Note: Also results the grid view of TestField do not show trailing spaces (SQL Server 2005).
SELECT
ID,
TestField,
LEN(TestField) As LenOfTestField, -- Does not include trailing …Run Code Online (Sandbox Code Playgroud) 我刚刚收到一位同事的通知,如果你为数据库中的VARCHAR字段分配一个长度,例如VARCHAR(1000),那么数据库将强制数据库为每一行保留1000个字节的空间,无论它是否是需要.
然而,他声称NVARCHAR(1000)字段将只保留所需的字节数.
我已经在这里和网络上尽可能地研究了这个,但是我找不到任何支持它的东西,SQL Server帮助文档也没有提到我能找到的任何地方.
我有一个表,表A,表AI中有字段A.字段A中有值如下:
Street A
Street B
,Street C
Street D
etc
Run Code Online (Sandbox Code Playgroud)
我想知道是否有任何SQL允许我从字段A中移除第一个字符,其中有一个,.
我知道从哪里开始我可以在字段A中选择所有具有a的行,但在尝试删除它时我不知道从哪里开始.
存储字符串时使用的最佳数据类型是什么,如名字?我见过varchar和nvarchar都用了.哪一个更好?有关系吗?
我也听说使用的最佳长度是255,但我不知道为什么.字符串是否有特定的长度?
我将在SQL Server中的nvarchar(MAX)字段中存储故事,但我知道故事会比MAX允许的更长,所以我应该采取什么方法?我应该将故事分成多行,还是应该跳过使用数据库并使用文本文件?
我对LINQ和MS SQL Server有一个非常烦人的问题.
我目前正在WPF C#中制作一些软件,并使用LINQ从数据库中的数据生成类.
但是,当我从程序中更新DB中的nvarchar或varchar字段时,LINQ会在字符串中添加尾随空格!
我在这样定义的表中有一个字段:
ProductName = NVARCHAR(10)
Run Code Online (Sandbox Code Playgroud)
所以,如果我这样做:
Product.Name = "Bike";
Product.Name = Product.Name.Trim();
repository.Add(Product); // Runs an .InsertOnSubmit
repository.Save(); // Runs a .SubmitChanges
Run Code Online (Sandbox Code Playgroud)
然后DB中的结果数据是"Bike [SPACE] [SPACE] [SPACE] [SPACE] [SPACE] [SPACE]",其中[SPACE]只是一个空格(此处不能在此文本中写入多个空格).
为什么会这样做,我如何让它停止添加那些烦人的尾随空格?
提前致谢
这是出现的内容:
我使用了模板,并将模型传递到我的视图中,我注意到它们得到了那些空白。我一直试图将DropDownList我的性别默认为 a,但不知何故,它们不起作用。我试图调试并认为可能是因为那些奇怪的空格。(除部门外,其他都有)。
我该如何解决这个问题?
我还想补充一点,我使用Entity Framework.
模型
[Table("carl")]
public class Employee
{
public int id { get; set; }
[DisplayName("First Name")]
[Required(ErrorMessage = "First name is required")]
public string firstname { get; set; }
[DisplayName("Last name")]
[Required(ErrorMessage = "Last name is required")]
public string lastname { get; set; }
[Required(ErrorMessage = "Gender is required")]
public string gender { get; set; }
[DisplayName("Department")]
[Range(1, 3)]
[Required(ErrorMessage = "Dep name is required")]
public int department { get; set; …Run Code Online (Sandbox Code Playgroud) 我在ASP.NET中创建一个简单的项目,并使用此代码继续登录,检测角色并打开确切的页面.
string cmdText = "SELECT Username,Role FROM Login WHERE Username = '" + TextBox1.Text + "' AND Password = '" + TextBox2.Text + "'";
string username = "";
string role = "";
using (SqlCommand SelectCommand = new SqlCommand(cmdText, connectionstring))
{
SqlDataReader myReader;
connectionstring.Open();
myReader = SelectCommand.ExecuteReader();
while (myReader.Read())
{
username = myReader["Username"].ToString();
role = myReader["Role"].ToString();
}
myReader.Close();
Response.Redirect(role + ".aspx");
}
Run Code Online (Sandbox Code Playgroud)
我设置它role+".aspx"是因为我在if函数中遇到了一些奇怪的错误..它无法正常工作..
但仍然有问题重定向到页面..我注意到了这一点
因此,我对这个错误感到困惑,于是我决定检查SQL Server中的数据,并且有:
角色之后有5个空格.我试图删除它们.但是在保存数据后再次出现空间...我注意到同样的事情是名称和密码
但现在有9个空格..看起来像SQL Server Management Studio试图填写最多10个字母......
Username,password并且role是nchar(10)类型..是问题吗? …
我正在开发一个图书馆管理系统,使用Visual Studio 2015作为前端,Microsoft SQL Server 2014作为后端来存储数据.
这是我的桌子设计:

但是当我尝试从Visual Studio传递数据时,它会将空白空间保存到定义的长度.

例如,如果存储文本在标题上包含10个字符,则剩余490个商店作为空白.
突出显示的是列中的空白区域.如果我设置默认长度10,则无法存储超过10的数据
这有什么解决方案吗?这是我的数据库或Visual Studio上的问题?
我有这样的文件名:一个例子.pdf
我想将文件名保存在SQL Server表中,并从SQL Server表中读取它.你是怎样做的?
这是代码:
class Bestand
{
public void Add(string filePath, DateTime fileDate, string fileName = "")
{
Bestand bestand = this.CurrentBestand;
if (filePath.Length > 0 && CanReadFile(filePath))
{
Binary bin = new Binary();
bin.Data = new System.Data.Linq.Binary(File.ReadAllBytes(filePath));
bestand.BestandsDatum = fileDate;
bestand.BestandsNaam = String.IsNullOrEmpty(fileName) ? Path.GetFileName(filePath) : Encoding.UTF8.GetBytes(fileName)[0].ToString();
bestand.Binary = bin;
}
}
public void Save(string filePath)
{
byte[] buffer = Data.ToArray();
System.IO.File.WriteAllBytes(filePath, buffer);
}
…
}
Run Code Online (Sandbox Code Playgroud)
并调用此方法来保存文件:
documents[0].Add(beFile.Value, dtpDate.Value);
Run Code Online (Sandbox Code Playgroud)
并调用此方法打开文件:
public static void ViewBestand(IBestand bestand)
{
string orgFilepath …Run Code Online (Sandbox Code Playgroud) 谁能解释一下 char、nchar、varchar 和 nvarchar 之间的区别?