Удалите последние два символа столбца в MySQL - PullRequest
60 голосов
/ 21 мая 2011

У меня есть столбец SQL, где записи являются строками.Мне нужно отобразить эти записи после обрезки последних двух символов, например, если это запись 199902345, она должна вывести 1999023.

Я попытался просмотреть TRIM, но похоже, что он предлагает обрезку, только если мы знаемКакие последние два символа.Но в моем случае я не знаю, что это за последние два числа, и их просто нужно отбросить.

Итак, вкратце, какая строковая операция MySQL позволяет обрезать последние два символа строки?

Я должен добавить, что длина строки не фиксирована.Это может быть 9 символов, 11 символов или что-то еще.

Ответы [ 4 ]

101 голосов
/ 21 мая 2011

Чтобы выбрать все символы, кроме последнего n из строки (или, другими словами, удалить последние n символов из строки); используйте функции SUBSTRING и CHAR_LENGTH вместе:

SELECT col
     , /* ANSI Syntax  */ SUBSTRING(col FROM 1 FOR CHAR_LENGTH(col) - 2) AS col_trimmed
     , /* MySQL Syntax */ SUBSTRING(col,     1,    CHAR_LENGTH(col) - 2) AS col_trimmed
FROM tbl

Чтобы удалить определенную подстроку из конца строки, используйте функцию TRIM:

SELECT col
     , TRIM(TRAILING '.php' FROM col)
-- index.php becomes index
-- index.txt remains index.txt
52 голосов
/ 18 января 2017

Почему бы не использовать функцию LEFT (строка, длина) вместо подстроки.

LEFT(col,length(col)-2) 

Вы можете посетить здесь https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_left, чтобы узнать больше о строковых функциях Mysql.

4 голосов
/ 21 мая 2011
0 голосов
/ 10 мая 2013

Вы можете использовать LENGTH(that_string) минус number of characters, который хотите удалить, в SUBSTRING() select, возможно, или использовать функцию TRIM().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...