web-dev-qa-db-ja.com

mysqlクエリで文字列の最後の5文字を​​取得する

Mysqlを使用して最後の5つの数値を取得する必要があります。

私の値はYOT-A78514LOP-C4521 ...

最後の5文字を​​取得するだけです。クエリでこれを行うにはどうすればよいですか?

39
user1253602

RIGHT(str、len) 関数でこれを行うことができます。文字列strから右端len文字を返します。

以下のように:

SELECT RIGHT(columnname,5) as yourvalue FROM tablename
95
user319198

「正しい」機能がその方法です。部分文字列を使用すると、気づきにくい問題につながる可能性があります。

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)
14
Juha Palomäki

Rightは良い選択ですが、このようにsubstringを使用することもできます。

SELECT Substring(columnname,-5) as value FROM table_name
6
Ankit Sharma
SELECT row_id
  FROM column_name
WHERE column_value LIKE '%12345';

「12345」が「column_name」内の「column_value」の末尾のサフィックスであることが判明した場合、これは「row_id」を返します。

1
sheasie

そして、文字の後に正しい数の動的な文字を取得したい場合:

SELECT TRIM( 
    RIGHT(
        database.table.field, 
        (LENGTH(database.table.field) - LOCATE('-',database.table.field)) 
    )
)
FROM database.table;
1
xtrm