我有一个SQL列,其中的条目是字符串。我需要在修剪最后两个字符后显示这些条目,例如,如果该条目199902345
应该输出1999023
。
我尝试研究TRIM,但看起来只有在我们知道最后两个字符是什么的情况下,它才能提供修剪功能。但就我而言,我不知道最后两个数字是什么,只需要丢弃它们即可。
简而言之,什么是MySQL字符串操作可以修剪字符串的最后两个字符?
我必须补充一点,字符串的长度不是固定的。它可以是9个字符,11个字符或任何其他字符。
我有一个SQL列,其中的条目是字符串。我需要在修剪最后两个字符后显示这些条目,例如,如果该条目199902345
应该输出1999023
。
我尝试研究TRIM,但看起来只有在我们知道最后两个字符是什么的情况下,它才能提供修剪功能。但就我而言,我不知道最后两个数字是什么,只需要丢弃它们即可。
简而言之,什么是MySQL字符串操作可以修剪字符串的最后两个字符?
我必须补充一点,字符串的长度不是固定的。它可以是9个字符,11个字符或任何其他字符。
SUBSTRING
似乎合适。对于INT数据类型,它是那么容易,因为除以100
Answers:
要从字符串中选择除最后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
为什么不使用LEFT(string,length)函数而不是substring。
LEFT(col,length(col)-2)
您可以访问这里https://dev.mysql.com/doc/refman/5.7/zh-CN/string-functions.html#function_left了解有关Mysql String Functions的更多信息。
, 1
函数调用,那么我认为拥有一个全新的函数来实现的只是命名空间污染。 RIGHT
稍微有用一点,因为它可以使您免于LENGTH()
计算,但是,这两者之间的任何性能提升都可能比LENGTH()
单独调用的成本要少得多。LEFT
RIGHT
和之间的唯一区别是每次调用一个或两个加法运算SUBSTRING
。在SQL性能2中,本机添加没有任何作用。