2

如何使用 SUBSTR 从 MYSQl 中任何列的末尾删除字符?

例如:假设列值为1221213.2,所以我想实现1221213.

SELECT SUBSTR(colname,1,-2) FROM tablename.
4

5 回答 5

1

这是这个查询(假设您的“删除”是数据库中的更新数据):

UPDATE tablename SET colname=SUBSTR(colname, 1, CHAR_LENGTH(colname)-1)

-这将从字符串末尾删除1符号。(所以,SUBSTR(colname, 1, CHAR_LENGTH(colname)-2)对于 2 个 sumbols - 你已经更新了)

(更新。有LEFT()功能建议,更好。但是我不会重复该代码)。

于 2013-08-29T14:04:41.807 回答
0

前面的答案都假设您总是想删除最后 2 个字符。但是,如果在句号之后有更多(或更少)有效数字怎么办?

UPDATE your_table
SET    colname = SubStr(colname, 0, Locate('.', colname))
WHERE  Locate('.', colname) > 0

更新

更好的方法:

UPDATE your_table
SET    colname = SubString_Index(colname , '.', 1)
WHERE  Locate('.', colname) > 0
于 2013-08-29T14:16:44.933 回答
0

它适用于火鸟:

select substr(p.name, 1, strlen(rtrim(p.name))-2) from products p

我认为 MySQLstrlen需要用CHAR_LENGTH()函数替换。

于 2013-08-29T14:14:05.653 回答
0
SELECT LEFT(colname, CHARACTER_LENGTH(colname)-2);

宁愿避免意外CHARACTER_LENGTH()LENGTH()

现在看起来您正试图从十进制数中截断十进制数字。这就是您可能正在寻找的东西:

SELECT TRUNCATE(colname, 0);

并更新您的表格:

UPDATE tablename SET colname = TRUNCATE(colname, 0); -- or LEFT(...), or whatever approach you choose
于 2013-08-29T14:14:23.407 回答
0

您也可以使用 LEFT 功能。

select LEFT(colname, LENGTH(colname)-2);

LEFT(str, len) 从指定字符串的左边选择字符数。

于 2013-08-29T14:15:50.003 回答