SQL Server,varchar 数据到 nvarchar 数据
我有一个带有排序规则Danish_Norwegian_CS_AS 和许多varchar 列的数据库。我想将所有这些数据转换为 unicode,但还没有找到转换这些数据的方法。如果我理解正确的话,使用的编码是 UCS-2 小端。
例如,我有一个包含“Pàl-Trygve”的列,可以使用 Encoding.Default.GetString(Encoding.UTF8.GetBytes("Pàl-Trygve")) 使用 C# 轻松将其转换为“Pål-Trygve” ;
有没有办法在 Microsoft SQL Server 客户端中进行此转换?
I've got a database with collation Danish_Norwegian_CS_AS and lots of varchar columns. I'd like to convert all this data to unicode, but haven't found a way to convert this data yet. If I've understood correctly, the encoding used is UCS-2 little endian.
For example I've got a column containing 'PÃ¥l-Trygve' which is easily converted with C# to 'Pål-Trygve' using Encoding.Default.GetString(Encoding.UTF8.GetBytes("PÃ¥l-Trygve"));
Is there a way to do this conversion in the Microsoft SQL Server client?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
你可以只使用 CONVERT 语句吗?还是我在这里遗漏了细微差别?
来自 http://msdn.microsoft.com/en-us/library/ms187928 .aspx
Could you just use the CONVERT statement - or am I missing a nuance here?
From http://msdn.microsoft.com/en-us/library/ms187928.aspx
在 sql server 中,如果您在您喜欢的语句前放置一个 N 字符,它会转换为 unicode。
例如:
或
In sql server if you put a N character before your favorite statement, it convert to unicode.
for example:
or
在您对 Sam 的回答的评论中,您说“varchar 列中的数据是 ucs2 小端字符串的二进制代码,而不是 ascii。”。这与问题中所说的不同,你有文字。
因此,我将创建一整套并行表(带有 nvarchar 列)并通过一些 C# 代码加载它们。然后删除、重命名等。这在 t-sql 中并不容易做到
In your comment to Sam's answer you said "data in the varchar column is the binary code for an ucs2 little endian string and not ascii.". Which differs from what said in the question, where you have text.
So, I'd create a whole set of parallel tables (with nvarchar columns) and load them via some c# code. Then drop, rename etc. This isn't something to do easily in t-sql