ms sql查找unicode 0
在数据库中写入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(但不
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;