在本文中,我们将给您介绍关于sql-server–如何在SQLServer2012中将varbinary()转换为varchar(max)时对特定于语言的字符进行编码?的详细内容,此外,我们还将为您提
在本文中,我们将给您介绍关于sql-server – 如何在SQL Server 2012中将varbinary()转换为varchar(max)时对特定于语言的字符进行编码?的详细内容,此外,我们还将为您提供关于.net – SQL Server Varbinary(max):从varbinary字段中选择一个字节子集、SQL Server 2005将VARCHAR转换为INT,但默认为无效类型、SQL Server 2005:将varchar值'1.23E-4'转换为十进制失败、SQL Server 中,实现 varbinary 与 varchar 类型之间的数据转换的知识。
本文目录一览:- sql-server – 如何在SQL Server 2012中将varbinary()转换为varchar(max)时对特定于语言的字符进行编码?
- .net – SQL Server Varbinary(max):从varbinary字段中选择一个字节子集
- SQL Server 2005将VARCHAR转换为INT,但默认为无效类型
- SQL Server 2005:将varchar值'1.23E-4'转换为十进制失败
- SQL Server 中,实现 varbinary 与 varchar 类型之间的数据转换
sql-server – 如何在SQL Server 2012中将varbinary()转换为varchar(max)时对特定于语言的字符进行编码?
我正在使用此代码来处理转换:
SELECT CONVERT(VARCHAR(MAX),DATA) FROM [dbo].[TABLE_NAME]
结果行如下:
VW 6501 Çamaşır
我在语言特定字符方面遇到麻烦(目前我的语言是土耳其语)
如何在sql Server 2012中克服此编码问题?
考虑到任何给定语言的数据/编码问题丢失,是否有通用方法对任何语言进行此转换?
这可能听起来像一个菜鸟问题,但我真的很感激任何建议或答案.
谢谢,
解决方法
但是,.NET有方法可以做到这一点,你可以通过CLR集成来实现它们.
使用C#编译它:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.sqlTypes; using Microsoft.sqlServer.Server; namespace UtfLib { public static class UtfMethods { [sqlFunction(IsDeterministic = true,IsPrecise = true)] public static sqlBinary NVarCharToUtf8(sqlString inputText) { if (inputText.IsNull) return new sqlBinary(); // (null) return new sqlBinary(Encoding.UTF8.GetBytes(inputText.Value)); } [sqlFunction(IsDeterministic = true,IsPrecise = true)] public static sqlString Utf8ToNVarChar(sqlBinary inputBytes) { if (inputBytes.IsNull) return new sqlString(); // (null) return new sqlString(Encoding.UTF8.GetString(inputBytes.Value)); } } }
将程序集导入数据库并创建外部函数:
CREATE ASSEMBLY UtfLib FROM 'C:\UtfLib.dll' GO CREATE FUNCTION NVarCharToUtf8 (@InputText NVARCHAR(MAX)) RETURNS VARBINARY(MAX) AS EXTERNAL NAME UtfLib.[UtfLib.UtfMethods].NVarCharToUtf8 GO CREATE FUNCTION Utf8ToNVarChar (@InputBytes VARBINARY(MAX)) RETURNS NVARCHAR(MAX) AS EXTERNAL NAME UtfLib.[UtfLib.UtfMethods].Utf8ToNVarChar
最后一步,您必须启用clr
sp_configure 'clr enabled',1 GO RECONfigURE GO sp_configure 'clr enabled' -- make sure it took GO
瞧!
SELECT dbo.Utf8ToNVarChar(DATA) FROM [dbo].[TABLE_NAME]
.net – SQL Server Varbinary(max):从varbinary字段中选择一个字节子集
当向数据库中写入数据时,T-sql中有可用的VarBinary.Write()函数,允许字节递增地写入字段,但是似乎没有类似的功能可用于读取数据.
我知道.Net中的DataReader.GetBytes()方法,它将只选择您要求的字节,但是会带来性能开销吗?即,sqlserver中的select将会读取数据库中的所有字节,然后给出getBytes()方法所有这些字节,以便从它们请求的字节的子集?
感谢任何帮助.
解决方法
SQL Server 2005将VARCHAR转换为INT,但默认为无效类型
| dimension varchar(100) | | '5' | | '17' | | '3' | | 'Pyramids' | | 'Western Bypass' | | '15' |
我怎样才能写一个表达式,例如总结所有有效整数的值?如果我尝试:
-- should return 5 + 17 + 3 + 15 = 40 SELECT SUM( CONVERT( INT,dimension ) ) FROM mytable
将varchar值’Pyramids’转换为数据类型int时,我会收到转换失败.错误.
是否有我可以在我的表达式中使用的测试,就像ISNULL()函数一样,如果字段不是数字,它允许我指定默认值?
解决方法
SELECT SUM(CASE ISNUMERIC(dimension) WHEN 1 THEN CONVERT( INT,dimension ) ELSE 0 END) FROM mytable
CASE应检查维度是否为数字 – 如果是,则返回该值.如果它不是数字,则返回默认值(此处:0)
您是否需要经常查询,还可以向表中添加一个持久的计算列,该列封装此计算并存储该值.这样,当求和等等时,你并不总是重新计算这个值:
ALTER TABLE mytable ADD NumericValue AS CASE ISNUMERIC(dimension) WHEN 1 THEN CONVERT( INT,dimension ) ELSE 0 END PERSISTED
现在,您可以选择维度,numericvalue FROM mytable并获取这两个值,而无需执行任何计算.
SQL Server 2005:将varchar值'1.23E-4'转换为十进制失败
declare @a varchar(40)set @a=''1.23e-4''declare @b decimal(27,12)if isnumeric(@a) =1begin select @b=cast(@a as decimal(27,12))endelsebegin select @b=-1endselect @b
在SQL 2005环境下执行以上sql代码时,出现以下错误。
将数据类型varchar转换为数值时出错
有人知道为什么吗?
谢谢。
答案1
小编典典SELECT @b = CONVERT(REAL, @a, 2)
科学记数法仅适用于FLOAT
和REAL
。
SQL Server 中,实现 varbinary 与 varchar 类型之间的数据转换
,美国服务器,香港服务器,香港虚拟主机
关于sql-server – 如何在SQL Server 2012中将varbinary()转换为varchar(max)时对特定于语言的字符进行编码?的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于.net – SQL Server Varbinary(max):从varbinary字段中选择一个字节子集、SQL Server 2005将VARCHAR转换为INT,但默认为无效类型、SQL Server 2005:将varchar值'1.23E-4'转换为十进制失败、SQL Server 中,实现 varbinary 与 varchar 类型之间的数据转换等相关知识的信息别忘了在本站进行查找喔。
本文标签: