GVKun编程网logo

sql-server – 如何在SQL Server 2012中将varbinary()转换为varchar(max)时对特定于语言的字符进行编码?

5

在本文中,我们将给您介绍关于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)时对特定于语言的字符进行编码?

sql-server – 如何在SQL Server 2012中将varbinary()转换为varchar(max)时对特定于语言的字符进行编码?

我试图在sql Server 2012中将数据库列DATA从varbinary()转换为varchar(max).

我正在使用此代码来处理转换:

SELECT CONVERT(VARCHAR(MAX),DATA) FROM [dbo].[TABLE_NAME]

结果行如下:

VW 6501 Çamaşır

我在语言特定字符方面遇到麻烦(目前我的语言是土耳其语)

如何在sql Server 2012中克服此编码问题?

考虑到任何给定语言的数据/编码问题丢失,是否有通用方法对任何语言进行此转换?

这可能听起来像一个菜鸟问题,但我真的很感激任何建议或答案.

谢谢,

解决方法

通常,sql Server不会高度重视UTF-8.
但是,.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字段中选择一个字节子集

.net – SQL Server Varbinary(max):从varbinary字段中选择一个字节子集

在sql Server 2008中,从varbinary(MAX)字段(不使用FileStreams)读取部分二进制数据的最有效方式是什么?

当向数据库中写入数据时,T-sql中有可用的VarBinary.Write()函数,允许字节递增地写入字段,但是似乎没有类似的功能可用于读取数据.

我知道.Net中的DataReader.GetBytes()方法,它将只选择您要求的字节,但是会带来性能开销吗?即,sqlserver中的select将会读取数据库中的所有字节,然后给出getBytes()方法所有这些字节,以便从它们请求的字节的子集?

感谢任何帮助.

解决方法

您使用 SUBSTRING.这从服务器上的varbinary数据中读取一段代码段,并且只将代码段返回给客户端.

SQL Server 2005将VARCHAR转换为INT,但默认为无效类型

SQL Server 2005将VARCHAR转换为INT,但默认为无效类型

我在表中有一个varchar(100)列,它包含整数(作为字符串)和非整数字符串的混合.例如.
| 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'转换为十进制失败

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)

科学记数法仅适用于FLOATREAL

SQL Server 中,实现 varbinary 与 varchar 类型之间的数据转换

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 类型之间的数据转换等相关知识的信息别忘了在本站进行查找喔。

本文标签: