我有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...
但是,事实并非如此.只要有匹配项,它就会选择该行,而不管字符串中char的长度如何.这是我的代码:
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 ;
因此,例如:
?列:输入:示例行“您一天将拥有什么超能力”
^ —仅在有8个匹配项时才被选中,因为42/5 = 8.4.
42是上面字符串的字符长度.仅在有8个匹配项的情况下才应从此处选择.但是,只有1个匹配项-单词“ one”,但还是被选中了.我不确定自己做错了什么.请看一下我的代码.
被标记为重复.它不是重复的.我从那里得到的答案是行不通的.