SQLite: используйте синтаксис x'ABC при создании таблицы



При вставке значений в таблицу 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


Не работает.

585   1  

1 ответ:

Синтаксис x'..' задаетBlob-литерал . Таким образом, значение в таблице - это не строка, а большой двоичный объект, если только вы явно не преобразуете его в строку:

INSERT INTO test VALUES(CAST(x'0a41420a' AS TEXT));

В SQL идентификаторы (например, имена таблиц и столбцов) могут быть заключены в двойные кавычки. Внутри идентификатора в кавычках допускаются все символы (кроме нулевого байта) (но двойные кавычки должны быть удвоены):

sqlite> CREATE TABLE "
AB
"(cols);
sqlite> SELECT hex(name) FROM sqlite_master;
0A41420A

Comments

    Ничего не найдено.