如何使用 SUBSTR 从 MYSQl 中任何列的末尾删除字符?
例如:假设列值为1221213.2
,所以我想实现1221213
.
SELECT SUBSTR(colname,1,-2) FROM tablename.
如何使用 SUBSTR 从 MYSQl 中任何列的末尾删除字符?
例如:假设列值为1221213.2
,所以我想实现1221213
.
SELECT SUBSTR(colname,1,-2) FROM tablename.
这是这个查询(假设您的“删除”是数据库中的更新数据):
UPDATE tablename SET colname=SUBSTR(colname, 1, CHAR_LENGTH(colname)-1)
-这将从字符串末尾删除1
符号。(所以,SUBSTR(colname, 1, CHAR_LENGTH(colname)-2)
对于 2 个 sumbols - 你已经更新了)
(更新。有LEFT()
功能建议,更好。但是我不会重复该代码)。
前面的答案都假设您总是想删除最后 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
它适用于火鸟:
select substr(p.name, 1, strlen(rtrim(p.name))-2) from products p
我认为 MySQLstrlen
需要用CHAR_LENGTH()函数替换。
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
您也可以使用 LEFT 功能。
select LEFT(colname, LENGTH(colname)-2);
LEFT(str, len) 从指定字符串的左边选择字符数。