3

我必须列出表的所有详细信息,其中列 event_id 和 horse_id 以“1”结尾。我通过执行以下操作实现了这一点:

SELECT * FROM event 
WHERE event_id AND show_id LIKE '%1'

但是,问题指定了字符串函数的使用。在这种情况下,我能找到的唯一有用的字符串是 RIGHT()。我不能让它按我的意愿执行。

SELECT * FROM event
WHERE RIGHT('1',1) 

显示所有以 1 结尾的列。但是我需要将搜索限制为 event_id 和 horse_id。

SELECT * FROM event
WHERE event_id AND show_id RIGHT('1',1) 

不工作。“正确”字符串无效。

任何帮助表示赞赏。

4

4 回答 4

5

你快到,这就是为什么我毫不犹豫地回答。如果您只是举手回答问题,我会更加沉默,但是由于您已经完成了大部分工作(查找right()函数),所以我们开始吧。

首先,WHERE event_id AND show_id LIKE '%1'几乎可以肯定不会像你想的那样做。复杂表达式的每个组件都必须独立存在,因此您将看到:

WHERE event_id LIKE '%1' AND show_id LIKE '%1'

但是,这仍然没有使用字符串函数。他们得到的是您应该将字符串函数应用于列并进行比较,例如:

... where right(event_id, 1) = '1' ...

该函数right(event_id, 1)将返回event_id列的最右边的字符,您只需将其与文字进行比较'1'。也这样做horse_id(而不是show_id像您在示例中所做的那样)将为您提供所需的东西。

现在停止阅读并先尝试!


而且,如果您在阅读了上面的内容并去测试它之后仍然不明白,这就是您想要的东西。不要在没有先尝试使用上述信息的情况下使用它。

... where right(event_id, 1) = '1' and right(horse_id, 1) = '1'
于 2012-07-24T06:03:46.160 回答
3

MySQL 求救!

RIGHT(str, n)从 str 返回最右边的 n 个字符。这意味着您需要针对此返回值进行测试。

SELECT * FROM event WHERE RIGHT(event_id, 1) = '1' AND RIGHT(horse_id, 1) = '1';
于 2012-07-24T06:05:02.360 回答
1

尝试:

SELECT * FROM event
WHERE RIGHT(event_id, 1) = '1' AND 
      RIGHT(horse_id, 1) = '1';
于 2012-07-24T06:04:51.330 回答
1

尝试使用:

and substring(horse_id, -1) = '1'
于 2012-07-24T06:07:30.940 回答