gpt4 book ai didi

sql-server - 将 utf-8 编码的 varbinary(max) 数据转换为 nvarchar(max) 字符串

转载 作者:行者123 更新时间:2023-12-01 09:56:14 29 4
gpt4 key购买 nike

是否有一种简单的方法可以在 T-SQL 中将 utf-8 编码的 varbinary(max) 列转换为 varchar(max)。类似 CONVERT(varchar(max), [MyDataColumn]) .最好是不需要自定义功能的解决方案。
目前,我在客户端转换数据,但这有缺点,即正确的过滤和排序不如服务器端完成的高效。

最佳答案

SQL-Server 不知道 UTF-8(至少您可以高效使用的所有版本)。有limited support starting with v2014 SP2 (以及有关 supported versions 的一些详细信息)
阅读 utf-8 时通过 BCP 从光盘编码文件(与将内容写入光盘相同)。

重要信息:
VARCHAR(x)不是 utf-8 .它是 1 字节编码的扩展 ASCII,使用代码页(位于排序规则中)作为字符映射。
NVARCHAR(x)不是 utf-16 (但非常接近它,它是 ucs-2 ) .这是一个 2 字节编码的字符串,涵盖几乎所有已知字符(但存在异常(exception))。
utf-8将使用 1 个字节来表示纯拉丁字符,但使用 2 个或更多字节来编码外来字符集。

一个 VARBINARY(x)将举行utf-8作为无意义的字节链。

一个简单的CASTCONVERT不起作用:VARCHAR将每个字节作为一个字符。这肯定不是您期望的结果。 NVARCHAR将每块 2 个字节作为一个字符。再次不是你需要的东西。

您可能会尝试将其写入文件,然后使用 BCP 将其读回。 (v2014 SP2 或更高版本)。但我为你看到的更好的机会是 CLR function .

关于sql-server - 将 utf-8 编码的 varbinary(max) 数据转换为 nvarchar(max) 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54626404/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com