【问题标题】:SQL - How can i get the last two characters from a column?SQL - 如何从列中获取最后两个字符?
【发布时间】:2015-06-27 11:32:29
【问题描述】:

我有三张桌子。

用户 - 用户信息 - 地区

我构建了一个内部连接来获取 user_id 和 user_info。

Select * from users a inner join user_info b on a.id = b.user_id

但我在 user_info 中有一个名为 location 的列,它返回来自特定位置的 ID。就像这样:

00;11

为了获取位置,我必须将 user_info 表内联到另一个名为区的表,因为最后两个字符从区中获取了 ID。

这就是为什么我想内连接所有三个表,如下所示:

Select * from users a inner join user_info b on a.id = b.user_id inner join districts c on b.location = c.District_id

问题是,我只想从 Location 列中获取最后两个字符。但我得到了

00;11 //我只想得到11

稍后我将使用 Json 输出所有内容,我想获取用户信息和他的位置。

是否可以在 SQL 中对列进行“子串化”?

谢谢。

【问题讨论】:

  • 如果您对 RTFM 感到厌烦:dev.mysql.com/doc/refman/5.0/en/…
  • 如果使用 SUBSTRING 函数对字段进行 JOIN,效率不会很高。您最好添加一个仅包含子字符串结果的列。

标签: mysql sql


【解决方案1】:

是的,是的。见:MySQL String Functions

mysql> SELECT RIGHT('foobarbar', 4);
        -> 'rbar'

更多信息,请参见:

SUBSTR
RIGHT

【讨论】:

    【解决方案2】:

    您可以在 MySQL 中使用 SUBSTRING_INDEX 来获取分号后的字符串

    SELECT SUBSTRING_INDEX('00;11', ';', 2);
    

    或者在你的情况下:

    Select  SUBSTRING_INDEX(Location, ';', 2),* from users a inner join user_info b on a.id = b.user_id inner join districts c on b.location = c.District_id
    

    或者,您可以使用 RIGHT 获取字符串的最后两个字符

    SELECT RIGHT('00;11', 2);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-10
      • 2015-06-27
      • 1970-01-01
      • 1970-01-01
      • 2011-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多