2015-04-20 3 views
0

У меня есть три стола.SQL - Как я могу получить последние два символа из столбца?

пользователи - user_info - районы

И я построил внутренний присоединиться, чтобы получить user_id и user_info.

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

Но у меня есть столбец с именем location, внутри user_info, который возвращает идентификатор из определенного места. Так же, как это:

00; 11

А чтобы получить место, я должен INNER JOIN таблицы user_info, в другой таблице называется районы, потому что два последних символа получил идентификатор из р-н.

Вот почему я хотел бы INNER JOIN все три таблицы, как это:

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?

Спасибо.

+5

Если бы вы потрудились RTFM: https://dev.mysql.com/doc/refman/5.0/en /string-functions.html#function_right –

+1

Это не будет очень эффективно, если вы сделаете JOIN в поле, используя функцию SUBSTRING. Вам лучше добавить столбец только с результатом подстроки. –

ответ

1

Вы можете использовать SUBSTRING_INDEX в MySQL, чтобы получить строку после запятой

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); 
0

Да, это так. См: MySQL String Functions

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

Для получения дополнительной информации, пожалуйста, см:

SUBSTR
RIGHT

Смежные вопросы