我使用SQL服务器2014与排序SQL_Latin1_General_CP1_CI_AS
。
我有一个C#程序,可以将汉字插入我的数据库,例如:
"你","好".
在SQL Server Management Studio中,我可以清楚地看到它,也可以通过N搜索它。”你".
问题是,对于某些角色来说,它不起作用:
"〇", "㐄".
当我的C#程序开始插入这两个字符时,我引发了一个约束唯一异常(因为我将它作为汉字的唯一约束放入数据库)。
InnerException={“违反了唯一键约束“AK_Dictionary_Chinese”。无法在对象“dbo.Dictionary”中插入重复键。重复键值为(㐄).\r\n语句已终止。“
这是我的问题:这两个汉字(我有大约70个类似的问题)似乎没有很好地转换成UTF8,我遇到了这个问题。如果我删除了唯一约束,那么我当然可以将其插入数据库,并通过SQLServerManagementStudio查看它。但当我使用N“〇”搜索字符时,数据库会回答我多个匹配项:“〇”㐄"...
那我该怎么处理呢?我试图改变中国的排序,但我有同样的问题...
谢谢你的帮助。
如何在我的c#程序中添加汉字?
我的实体对象:
public partial class Dictionary
{
public int Id { get; set; }
public string Chinese { get; set; }
public string Pinyin { get; set; }
public string English { get; set; }
}
我只需向数据库中添加一个新的实体对象并调用SaveChanges();
var word1 = new Dictionary()
{
Chinese = "〇",
Pinyin = "a",
English = "b",
};
var word2 = new Dictionary()
{
Chinese = "㐄",
Pinyin = "c",
English = "bdsqd",
};
// We insert it into our Db
using (var ctx = new DBEntities())
{
ctx.Dictionaries.Add(word1);
ctx.Dictionaries.Add(word2);
ctx.SaveChanges();
}
如果您想在家里尝试,这里有一个小的sql脚本,可以重现这个问题。您可以通过SQL MANAGEMENT STUDIO执行它:
DECLARE @T AS TABLE
(
ID INT IDENTITY PRIMARY KEY,
Value NVARCHAR(256)
);
INSERT INTO @T(Value) VALUES (N'〇'), (N'㐄');
SELECT * FROM @T;
SELECT * FROM @T WHERE Value = N'〇';
DECLARE @T AS TABLE
(
ID INT IDENTITY PRIMARY KEY,
Value NVARCHAR(256)
) ;
INSERT INTO @T(Value) VALUES (N'〇'), (N'㐄'), (N'㐄〇'), (N'〇㐄');
SELECT * FROM @T;
SELECT * FROM @T WHERE CAST(Value AS varbinary) like CAST(N'〇%' AS varbinary)
SELECT * FROM @T WHERE CAST(Value AS varbinary) like CAST(N'㐄%' AS varbinary)
我找到了答案。事实上,汉字是“传统的”,SQLSERVER需要一点帮助。归类是正确的想法,但我必须指定中国传统的(找到它,我只是查询提供的所有可能的归类样本......)。
DECLARE @T AS TABLE
(
ID INT IDENTITY PRIMARY KEY,
Value NVARCHAR(256)
) ;
INSERT INTO @T(Value) VALUES (N'〇'), (N'㐄');
SELECT * FROM @T;
SELECT * FROM @T WHERE Value = N'㐄' COLLATE Chinese_Traditional_Pinyin_100_CI_AS;
很抱歉浪费了你的时间,我真的试着用中文整理,但不是传统的(我不知道这是繁体字...)。
固定的
问题内容: 我正在研究SQL Server存储过程。我有一个表“ User”,其中包含字段(ID,名称,电子邮件,地址)。 我有以下查询返回所有用户 它返回所有用户,但是我只想在返回之前将以下虚拟用户插入到结果记录中。 用户=> ID = 0,名称=“全部” 该记录不会出现在数据库中,但是在返回结果时,我想将此记录作为第一个记录插入,然后插入其余用户。我试图找到这样的东西,但徒劳无功。 问题答案:
问题内容: 我有一个查询,看起来像这样: 这是一个非常基本的查询。除了提取Item的值之外,我还想将其他值添加到混合中,然后将其返回给我。在原始SQL中,我会这样做: 如何通过sqlalchemy手动添加该值? 问题答案: 您需要使用,看起来有点像这样: 注意,该参数无需任何转换即可插入查询;如果您从应用程序外部接受text参数的值,则可能使您暴露于SQL Injection漏洞。如果这是您需要的
问题内容: 有没有办法插入预设值和我从选择查询中获得的值?例如: 我有“字符串”的值和数字5,但是我必须从这样的选择中找到[int]值: 那给我那个ID放在table1里面。 如何将其合并为一个语句? 问题答案: 使用查询,并将已知值放入:
我有下一个关系(只是示例)用户0/1-*故事当我想获得包含用户的故事列表时,我会进行下一个查询。 我注意到ef向db发出了额外的请求以获取用户(但这不应该是因为我使用了include)。没有AsNoTrack(),一切都很好。 看起来这是一个可为null的关系问题,因为不允许为null的关系可以很好地工作。 有人有类似的问题吗?可能是“允许空”关系的预期行为。
问题内容: 我的SQL代码如下: 等效的linq表达式是什么? 问题答案: 我第一次尝试在 来源 LINQ to SQL中的NOT IN子句
我在java中有两个类,分别是txn和txnID,我想从嵌入表中检索txnID值,下面是我的txn类结构: 以下是嵌入式类结构: 我的查询语句如下: 错误消息如下: