NUL
个字符吗?chr
或char
函数。答案 0 :(得分:1)
通常,不-SQLite内部不是8位纯净的,这可能是由于其Tcl传统。虽然NUL不会引起损坏问题,但SQLite通常会在第一个嵌入的NUL字符处停止处理字符串。
即使对于像GLOB这样的运算符,也是如此。例如,当您嵌入NUL字符时,例如,不能将BLOB列与GLOB
匹配。这个
select * from table where blobcol glob x'00022a';
仅匹配空的blob值:虽然您可以使用文字BLOB语法(即x'hexdigits'
)并在使用字符串的地方使用结果值,但SQLite通常只在第一个NUL之前使用该部分。
至少,。这是直到SQLite 3.26.0为止的状态。
请注意,SQLite还具有BLOB类型,可以存储嵌入式NUL而不出现任何问题,但是SQLite中几乎没有使用它们的功能,并且通常很难从SQL接口库中使用它们。
它们还可以在许多情况下静默转换为字符串,这时嵌入式NUL开始再次引起问题。
答案 1 :(得分:0)
不确定从哪个版本开始支持,但您可以这样做:
create table foo (bar data);
insert into foo(bar) values (x'001122334400ff');
select length(bar),hex(bar),bar from foo;