【发布时间】:2015-09-21 20:43:02
【问题描述】:
我有 2 个 SELECT 语句,假设它是为了使所需的匹配数直接对应于“输入”列的 char_length。所以,例如:
if (char_length(input) <= 5) { matches required is 1 }
if (char_length(input) > 5 && char_length(input) <= 10) { matches required is 2 }
if (char_length(input) > 10 && char_length(input) <= 15) { matches required is 3 }
and ect...
然而,事实并非如此。只要存在匹配项,它就会选择该行,无论字符串中字符的长度如何。这是我的代码:
SELECT @limit :=0;
SELECT input, response, (
input LIKE '% one %'
) AS matches, @limit := @limit +1
FROM allData
WHERE @limit < CEIL( CHAR_LENGTH( input ) /5 )
HAVING matches >0
AND matches = (
SELECT MAX( (
input LIKE '% one %'
) )
FROM allData )
LIMIT 30 ;
例如:
列:输入:示例行 "what superpower would you have for one day"
^---只有在有 8 个匹配项时才会被选中,因为 42/5 = 8.4。
42 是上面字符串的字符长度。如果有 8 个匹配项,则应该只从那里选择。但是,只有 1 个匹配项 - 单词“one”,但无论如何它还是被选中了。我不确定我做错了什么。请看一下我的代码。
被标记为重复。它不是重复的。我从那里得到了不起作用的答案。
【问题讨论】:
-
@barmar 这就是我得到答案的地方......它不起作用。这就是我重新发布它的原因。
-
你为什么不告诉发布答案的人它不起作用,然后在那里解决它?
-
@Barmar 你有 200k 代表。你当然可以回答。你不能吗?
-
我也许可以,但我还没想太多。
-
@Barmar 你愿意吗?请问?