2011-05-21 713 views
47

我有一个SQL列,其中的条目是字符串。修剪最后两个字符后,我需要吐出这些条目,例如如果条目为199902345则应输出1999023去掉MySQL中列的最后两个字符

我试过寻找TRIM,但看起来只有在我们知道最后两个字符是什么时才提供修整。但就我而言,我不知道最后两个数字是什么,他们只需要被丢弃。

总之,MySQL的字符串操作能够修剪字符串的最后两个字符吗?

我必须补充说,字符串的长度不固定。它可以是9个字符,11个字符或任何。

+0

该列的数据类型是什么? INT或VARCHAR。 INT将允许更快的计算。 – 2011-05-21 09:01:38

+0

@Salman它的VARCHAR(因为我们的字符也在我们的实现中) – 2011-05-21 09:53:18

+1

好吧,然后'SUBSTRING'似乎是合适的。对于INT数据类型,除以100即可。 – 2011-05-21 10:03:33

回答

92

使用MySQL 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 
0

您可以使用LENGTH(that_string)减去number of characters要在SUBSTRING()选择或许还是使用TRIM()函数删除。

+0

如果您可以通过索引显示“TRIM()”的所有字符的示例,而不是删除所有特定类型的字符,我很乐意看到它。 – ebyrob 2017-12-21 13:32:39

23

为什么不使用LEFT(字符串,长度)函数而不是子字符串。

LEFT(col,length(col)-2) 

您可以在这里访问https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_left了解更多关于Mysql字符串函数的信息。

+0

虽然接受的答案是正确的,但我更喜欢这个答案。我读了一些关于LEFT()比SUBSTRING()稍微高性能的讨论,但我现在无法找到链接。 如果你可以添加一个链接到LEFT函数的mysql文档,那将是非常好的。 – anuragw 2017-01-25 18:43:22

+0

我编辑了我的答案,并把链接。 – Larz 2017-01-26 18:30:11

+0

比SUBSTRING()更好的解决方案 – 2017-02-02 09:03:09