SqlLite. Как воспользоваться оператором like?

Всем привет!
Пытаюсь воспользоваться like'ом в sqllit и не получается сделать выборку из поля param
При селекте это поле показывается как:
b'{"param1":"1","param2":"2"}'
И если написать запрос вида, то ничего не вернется((
select * from table where param like "%2%",
По другим полям like работает нормально.
Подскажите, как лечить

Важное замечание - использую либу для питона sqlite3
  • Вопрос задан
  • 70 просмотров
Решения вопроса 1
@aaland Автор вопроса
Подсказали на соседнем сайте, что у меня не text поле , а BLOB
Решение - явное преобразование (CAST).

SELECT * FROM table WHERE CAST(param AS TEXT) LIKE '%2%';
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
shabelski89
@shabelski89
engineer
Для чего Вам хранение словаря в виде байтовой строки в таблице?
import sqlite3


blob = bytearray(b'{"param1":"1","param2":"2"}')

with sqlite3.connect('np.db') as connection:
    cursor = connection.cursor()
    cursor.execute("CREATE TABLE IF NOT EXISTS t_info_t (blob_Value BLOB )")
    cursor.execute("INSERT OR IGNORE INTO t_info_t (blob_Value) values (?)", (blob,))
    cursor.execute("SELECT * FROM t_info_t")
    data = cursor.fetchall()
    print(data)
    print(type(data[0][0]))
    out = data[0][0].decode()
    print(out)
    print(type(out))
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы