使用AND和OR运算符的Mysql查询在Sqlite数据库中无法正常工作

时间:2018-03-09 14:37:51

标签: mysql sqlite

我有一个完美的以下mysql查询,但是当我在sqlite数据库上查询相同的查询时,它显示的行数超出预期。

SELECT word,point,length(word) as len 
FROM table 
WHERE 
(word LIKE '%A%' OR word LIKE '%P%' OR word LIKE '%L%' OR word LIKE '%E%') 
AND 
(length(word)<=5) 
order by point desc

Mysql查询产生23行,而sqlite显示10693行,这是不期望的。在sqlite平台上有什么需要改变的吗? 提前谢谢。

1 个答案:

答案 0 :(得分:0)

实际上我发现查询在mysql和sqlite上都无法正常工作。我想让它返回仅包含字母A,P,P,L,E的行(例如,APPEL,APPLE,PEPLA等),但查询显示的字由A,P,P以外的字母组成, L,E(例如,JAZZY,JUPON,PLACK等)。我已经使查询包含非常接近的预期结果。可以根据需要使用php或任何语言过滤掉剩余的内容。

select * from (SELECT word, point, ( ( LENGTH(word) - LENGTH( REPLACE ( word, "A", "") ) ) + ( LENGTH(word) - LENGTH( REPLACE ( word, "P", "") ) ) + ( LENGTH(word) - LENGTH( REPLACE ( word, "L", "") ) ) + ( LENGTH(word) - LENGTH( REPLACE ( word, "E", "") ) ) ) AS COUNT FROM table where length(word)<= length("APPLE") ORDER BY `table`.`word` ASC ) as inner_table WHERE length(word)=COUNT