我需要使用一个查询,当它少于4个字时会从字段中提取数据,这是否可能,如果是这样,你能给出一些指针吗?我想如果不可能的话,它可以遍历结果,直到它找到一个3个单词,然后在找到一个时结束while语句。
答案 0 :(得分:10)
SELECT column FROM table where LENGTH(column) - LENGTH(REPLACE(column, ' ', ''))+1 < 4
select * from TABLE where column not regexp '^.+( .+){4}$'
答案 1 :(得分:1)
在每个记录的基础上调用函数在性能方面几乎总是一个坏主意 - 磁盘空间通常比CPU容量“便宜”(我把它括在引号中,因为我不是在谈论美元成本)。
正如我的DBA导师曾经告诉我的那样,大多数数据库往往“阅读比阅读更多”;在这种情况下,理想的解决方案是在插入或更新行时触发,以计算该列中的单词数并将其存储在另一列中。它理想的原因是单词数量只会在您更新字段时发生变化,因此最好在此时执行时间密集型计算,而不是每次读取记录时(不必要地)。
添加的所需空间将是最小的,因为您将一个(短)整数添加到long(字符串)但是您会发现您的查询只是使用整数字段来尖叫(确保您对其进行索引)。
答案 2 :(得分:0)
我打算建议LIKE '% % % %'
,但我不完全确定这是否有用。