将值插入SQLite表时,可以使用x' 41'等语法。 (= A)。当您尝试插入选项卡,换行符等特殊字符时,这非常有用。
sqlite> CREATE TABLE test(aColumn VARCHAR(10));
sqlite> INSERT INTO test VALUES(x'0a41420a');
sqlite> SELECT * FROM test;
AB
sqlite>
此语法是否也可用于定义表的名称?
像
这样的东西sqlite> CREATE TABLE x'0a41420a'(aColumn VARCHAR(10));
Error: near "x'0a41420a'": syntax error
不起作用。
答案 0 :(得分:1)
x'..'
语法指定blob literal。
因此,表中的值不是字符串而是blob,除非您将其显式convert为字符串:
INSERT INTO test VALUES(CAST(x'0a41420a' AS TEXT));
在SQL中,标识符(例如表/列名称)可以用双引号引用。在引用的标识符内,允许所有字符(零字节除外)(但双引号必须加倍):
sqlite> CREATE TABLE "
AB
"(cols);
sqlite> SELECT hex(name) FROM sqlite_master;
0A41420A