SQLite:使用x';abc&x27;创建表时的语法

SQLite:使用x';abc&x27;创建表时的语法,sqlite,Sqlite,在将值插入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 TA

在将值插入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

不起作用

语法
x'..'
指定了一个。 因此,表中的值不是字符串而是blob,除非将其显式转换为字符串:

INSERT INTO test VALUES(CAST(x'0a41420a' AS TEXT));
在SQL中,标识符(如表/列名)可以用双引号引起来。在带引号的标识符中,允许使用所有字符(零字节除外)(但双引号必须加倍):


感谢您对x'..'语法的澄清。你说得对,从双引号开始,我可以使用换行符。但是选项卡(或者更不常见的空白字符,如\v、\r、\f…)怎么样?似乎不可能在sqlite命令行shell中使用选项卡(即使在以双引号开始之后)。是否有另一种解决方案,例如写入其十六进制值(=ascii表示;这就是我认为可以使用x'..'语法的原因)?每个字符都是可能的,这是真的。在我的sqlite命令shell中不直接工作,但在我创建输入文件并将其通过管道传输到命令shell时,它可以工作。
sqlite> CREATE TABLE "
AB
"(cols);
sqlite> SELECT hex(name) FROM sqlite_master;
0A41420A