Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server:正在从字符串中删除0x00字符_Sql Server_String_Tsql_Encoding - Fatal编程技术网

Sql server SQL Server:正在从字符串中删除0x00字符

Sql server SQL Server:正在从字符串中删除0x00字符,sql-server,string,tsql,encoding,Sql Server,String,Tsql,Encoding,我正在比较两个字符串,其中一个字符串由我指定,第二个字符串取自一个表 表中的一个,在我将其转换为十六进制后,显示“00”符号,如示例1400210068008100。我希望在字符串比较期间删除这些空字符。我试着使用replace和trim但这对我没有帮助,唯一有效的方法是像那样使用,但这并不安全 所以我的问题是,如何从我从表中获取的字符串中删除不需要的“00”字符?您可能混合了VARCHAR(1字节扩展ASCII)和NVARCHAR(2字节unicode)编码。看看这个: SELECT CAST

我正在比较两个字符串,其中一个字符串由我指定,第二个字符串取自一个表

表中的一个,在我将其转换为十六进制后,显示“00”符号,如示例
1400210068008100
。我希望在字符串比较期间删除这些空字符。我试着使用
replace
trim
但这对我没有帮助,唯一有效的方法是像
那样使用
,但这并不安全


所以我的问题是,如何从我从表中获取的字符串中删除不需要的“00”字符?

您可能混合了
VARCHAR
(1字节扩展ASCII)和
NVARCHAR
(2字节unicode)编码。看看这个:

SELECT CAST(N'hello' AS VARBINARY(MAX)) --look at the N in front of the literal!
      ,CAST( 'hello' AS VARBINARY(MAX))

"hello" as NVARCHAR: 0x680065006C006C006F00 
"hello" as VARCHAR:  0x68656C6C6F
将二进制文件转换为
NVARCHAR(MAX)
,将其转换为
VARCHAR(MAX)
,然后转换为
VARBINARY(MAX)

更新
最好将字符串扩展为
NVARCHAR(MAX)
,而不使用
双零,并在unicode基础上进行比较。否则,如果您的字符串包含特殊字符(如
0x14
…)

您可能混合了
VARCHAR
(1字节扩展ASCII)和
NVARCHAR
(2字节unicode)编码,您可能会遇到麻烦。看看这个:

SELECT CAST(N'hello' AS VARBINARY(MAX)) --look at the N in front of the literal!
      ,CAST( 'hello' AS VARBINARY(MAX))

"hello" as NVARCHAR: 0x680065006C006C006F00 
"hello" as VARCHAR:  0x68656C6C6F
将二进制文件转换为
NVARCHAR(MAX)
,将其转换为
VARCHAR(MAX)
,然后转换为
VARBINARY(MAX)

更新
最好将字符串扩展为
NVARCHAR(MAX)
,而不使用
双零,并在unicode基础上进行比较。否则,如果字符串包含特殊字符(如
0x14
…)

是否要删除所有尾随的零或其他字符?所有空字符显示是否将
00
从数字中的合法序列中区分为空?这个问题感觉不对。结尾总是“00”还是可以是“000”/“0000”?结尾总是“00”?是否要删除所有尾随的零或其他?所有空字符显示您是否将
00
从数字中的合法序列中区分为空?这个问题感觉不对。结尾总是“00”还是可以是“000”/“0000”?结尾总是00你的答案更相关:+1你的答案更相关:+1