Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.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
ms sql查找unicode 0_Sql_Sql Server_Sql Like - Fatal编程技术网

ms sql查找unicode 0

ms sql查找unicode 0,sql,sql-server,sql-like,Sql,Sql Server,Sql Like,在数据库中写入unicode 0,然后开始查询以查找值。 例如: select *,Len(test) as length, Unicode(test) as unicode,DATALENGTH(test) as datalength from (values (NCHAR(0x0))) as t(test) where test like N'_' 但不会返回该值。为什么?我需要做什么才能使它工作?如果我正确,unicode 0(NCHAR 0x0)不作为字符计算,而是作为NULL(但不

在数据库中写入unicode 0,然后开始查询以查找值。 例如:

select *,Len(test) as length, Unicode(test) as unicode,DATALENGTH(test) as datalength 
from (values (NCHAR(0x0))) as t(test)
where test like N'_'

但不会返回该值。为什么?我需要做什么才能使它工作?

如果我正确,unicode 0(NCHAR 0x0)不作为字符计算,而是作为NULL(但不是SQL NULL类型)计算。
通配符u正在搜索替换1个字符,这意味着该值至少需要有一个字符。移除uu将获得所需的结果。

这是根据以下各项的预期行为:

0x0000(字符(0))是Windows排序规则和 不能包含在LIKE中

但是,请注意,
像CHAR(0)
一样工作

DECLARE @Character nchar(1);
SET @Character = NCHAR(0);
SELECT CASE WHEN @Character LIKE CHAR(0) THEN 1 ELSE 0 END;


具体地说,文档中说,对于
(N)CHAR(0)
使用通配符(如
)将不起作用。

当使用“\u”作为通配符时,另一个需要考虑的问题+1(值(NCHAR(0x0)),(NCHAR(0xFFFF))和0xFFFF也不起作用。@tire0011看起来像另一个未定义的字符,老实说:
DECLARE @Character nchar(10);
SET @Character = NCHAR(0);
SELECT CASE WHEN @Character LIKE '%' + CHAR(0) + '%' THEN 1 ELSE 0 END;