sql - ms sql 查找 unicode 0

标签 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'_'

但是没有返回值。为什么?我需要做什么才能让它起作用?

最佳答案

这是 Pattern matching documentation 的预期行为:

0x0000 (char(0)) is an undefined character in Windows collations and cannot be included in LIKE.

但是请注意,LIKE CHAR(0) 确实有效

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

或者

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

具体来说,文档说使用通配符,例如 '_'(N)CHAR(0) 将不起作用。

关于sql - ms sql 查找 unicode 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50389846/

相关文章:

sql - 为什么基于关系集的查询比游标更好?

sql-server - 在虚拟框中将 Java EE 应用程序与 Sql Server 连接

sql-server - SELECT * INTO [新数据库].[表] FROM [其他数据库].[表]

sql-server - 优化sql server数据库

sql - postgresql "SELECT title FROM table WHERE title ILIKE %keyword%"不使用 BTREE INDEX

mysql - 使用 LIKE 条件用 sql 搜索德语字符

sql - 检查 Postgres JSONB 数组中是否存在字符串

php - SQL查询中关键字内容的动态

mysql - 这个查询会返回什么? (SQL)

sql - 将逗号分隔值转换为 Oracle 中的行