如果使用相等运算符 = 或 == 或 equals 函数,ClickHouse 不会将 \0 字符考虑在内,即查询 SELECT * FROM FixedStringTable WHERE name = 'a'; 和 SELECT * FROM FixedStringTable WHERE name = 'a\0'; 返回相同的结果。
如果使用 LIKE 子句,ClickHouse 会将 \0 字符考虑在内,因此可能需要在筛选条件中显式指定 \0 字符。
SELECT name
FROM FixedStringTable
WHERE name = 'a'
FORMAT JSONStringsEachRow
{"name":"a\u0000"}
SELECT name
FROM FixedStringTable
WHERE name = 'a\0'
FORMAT JSONStringsEachRow
{"name":"a\u0000"}
SELECT name
FROM FixedStringTable
WHERE name = 'a'
FORMAT JSONStringsEachRow
Query id: c32cec28-bb9e-4650-86ce-d74a1694d79e
{"name":"a\u0000"}
SELECT name
FROM FixedStringTable
WHERE name LIKE 'a'
FORMAT JSONStringsEachRow
0 rows in set.
SELECT name
FROM FixedStringTable
WHERE name LIKE 'a\0'
FORMAT JSONStringsEachRow
{"name":"a\u0000"}