Вы говорите "" "Так как в утверждении: ГДЕ a = значение .. a должно быть именем столбца" "".Не так, a
может быть любым выражением.
Вы говорите "" "resultTem получается что-то вроде: ('FEET \ n',), а resultTem [0] получается как: FEET, который долженbe 'FEET \ n' "". Вместо print resultTem[0]
используйте print repr(resultTem[0])
. Привыкайте использовать repr()
в ситуациях отладки.
Как уже отмечали другие, ваши данные нуждаются в очистке.Если в этом столбце type
есть индекс, конечный случайный пробел будет мешать индексированию. Если в вашей базе данных есть функция (названная, например, STRIP), которая работает как Python str.strip()
, вы сможете исправить это с помощьюоднострочное что-то вроде этого:
UPDATE table SET type = STRIP(type) WHERE type != STRIP(type);
Тем временем вы можете выполнить запрос типа «старт с»:
SELECT sensor FROM table WHERE type LIKE 'FEET%'
или использовать
SELECT sensor FROM table WHERE STRIP(type) = 'FEET'
Дополнительные комментарии:
(1) Похоже, ваша выходная строка имеет ширину 30 символов (если только она не была искажена вашими вставками и моим редактированием:
('FEET\n ',)
.... v....1....v....2....v....3
Одним из возможных объяснений лишних пробелов является то, что тип данных столбца CHAR(30)
.контроль вы можете изменить его на VARCHAR(30)
или просто VARCHAR
.См. этот раздел документации и обратите внимание на «Совет» в середине страницы.
(2) Кажется, что нет такой простой функции SQL, как str.strip()
для удаления ведущих /замыкающий пробел.В PostgreSQL вам понадобится что-то вроде
TRIM(E' \r\n\t' FROM your_string_expression)
для удаления начальных и конечных пробелов, возврата каретки, перевода строки и табуляции.См. Документы здесь (и здесь ; см. Раздел 4.1.2.2. Строковые константы с E-Style Escape).