55

我必须使用 mysql 获取最后 5 个数字。

我的价值观是YOT-A78514LOP-C4521...

我只需要最后五个 char 。如何在查询中执行此操作?

4

6 回答 6

125

您可以使用RIGHT(str,len)函数执行此操作。从字符串str返回最右边的len 个字符,

如下所示:

SELECT RIGHT(columnname,5) as yourvalue FROM tablename
于 2012-04-13T02:46:14.787 回答
16

“Right”-function 是一种方法,使用子字符串可能会导致一个不太容易注意到的问题:

mysql> select right('hello', 6);
+-------------------+
| right('hello', 6) |
+-------------------+
| hello             |
+-------------------+
1 row in set (0.00 sec)

mysql> select substring('hello', -6);
+------------------------+
| substring('hello', -6) |
+------------------------+
|                        |
+------------------------+
1 row in set (0.00 sec)

但是,如果您不尝试越过字符串的开头,那么子字符串当然可以正常工作:

mysql> select substring('hello', -5);
+------------------------+
| substring('hello', -5) |
+------------------------+
| hello                  |
+------------------------+
1 row in set (0.00 sec)
于 2014-01-11T15:20:44.277 回答
7

Right是一个不错的选择,但您也可以substring像这样使用-

SELECT Substring(columnname,-5) as value FROM table_name
于 2012-04-13T05:53:44.157 回答
4
SELECT row_id
  FROM column_name
WHERE column_value LIKE '%12345';

当发现“12345”是“column_name”中“column_value”的尾部后缀时,这将返回“row_id”。

于 2013-09-24T08:33:43.550 回答
1

如果你想在一个字符之后获得大量正确的字符:

SELECT TRIM( 
    RIGHT(
        database.table.field, 
        (LENGTH(database.table.field) - LOCATE('-',database.table.field)) 
    )
)
FROM database.table;
于 2013-11-26T12:36:10.200 回答
0

SELECT SUBSTR ('Stringname', -5) AS提取字符串;

于 2021-07-30T19:49:44.603 回答