SQLite:将整数字段值转换为float

时间:2014-09-26 18:55:11

标签: python sqlite

我有一个SQL数据库,我使用WHERE子句来提取值来进行过滤。但是,我想看看INTEGER字段值是否是TEXT字段值的子字符串。需要注意的是,我需要使用通配符。

一些示例数据:

id    components
123   '234,345'  
234   -         
345   -
456   -

所以我想使用CAST(id as AS TEXT)并将其与'%'连接起来。如果id位于组件字符串的中间,则使用通配符(使用||)。但这不起作用,即

SELECT t1.*, t2.* FROM table t1 JOIN table t2 WHERE (t1.components IS NULL OR 
(t1.components IS NOT NULL AND t1.components 
  NOT LIKE '%' || CAST(t2.id AS TEXT) || '%')) 
OR (t2.components IS NULL OR (t2.components IS NOT NULL AND t2.components 
  NOT LIKE '%' || 
CAST(t1.id AS TEXT) || '%')))

不应返回记录对[123,234]或[123,345]

简而言之,如何在我的查询中将'%' || CAST(t2.id AS TEXT) || '%'作为'%234%'读入?

谢谢!

更新9-29-2014:好的,我明白了。它确实有效。我的括号出现了问题,并且我有一个OR,我应该有一个AND。新的工作代码(虽然可能不是最优的@deets)是:

SELECT t1.*, t2.* FROM table t1 JOIN table t2 WHERE (t1.components IS NULL OR 
(t1.components IS NOT NULL AND t1.components 
  NOT LIKE '%' || CAST(t2.id AS TEXT) || '%')) 
AND (t2.components IS NULL OR (t2.components IS NOT NULL AND t2.components 
  NOT LIKE '%' || CAST(t1.id AS TEXT) || '%')))

0 个答案:

没有答案