繁体   English   中英

MySQL:将数字数字替换为零

[英]MySQL: Replace numbers digits to Zero

有没有办法将所有数字的数字替换为“0”,但只保留第一个数字:

样品转换:

`3849` => `3000`
`3001` => `3000`
`3838383838` => `3000000000`

并将其应用于mysql列?

谢谢,

一个简单的选择是将第一个数字与一系列零连接在一起,这些零的长度比数字的长度小一个。

SELECT
    CONCAT(LEFT(col, 1), REPEAT('0', CHAR_LENGTH(col) - 1)) AS new_col
FROM yourTable

请注意,如果col是数字类型列,那么从技术上讲,我们应该在获取子字符串之前将其强制转换为文本。 在这种情况下,MySQL会对文本进行隐式转换,因此从技术上讲,我们不需要正式转换,但是应该做出这一点。

在这里演示:

Rextester

希望这对你有用

 select left(column_name,1),
    rpad(left(column_name,1),length(column_name),'0')
    from table_name;

这是一种C语言风格的方法。 楼层(3456/1000)给我们3(像一个整数除法),然后乘以1000得到结果。

 SELECT floor(3456 / power(10, length(3456)-1)) * power(10, length(3456)-1)

具有负第二个参数的TRUNCATE将小数点左侧的数字设置为零:

SELECT TRUNCATE(column_name, -FLOOR(LOG10(column_name)))
FROM table_name;
select floor(n / POW(10, floor(LOG10(n)))) * POW(10, floor(LOG10(n))) from t

演示

尝试这个:

SELECT left(columnname,1), rpad(left(columnname,1),length(columnname),'0') FROM tablename;

可以这样做: -

select Column1-convert(bigint, (SUBSTRING(convert(varchar(20),Column1),2,len(convert(varchar(20),Column1))))) ,* 
from yourtable 

试试这个MYSql:

 DECLARE v_test NVARCHAR(100)
SET v_test = '585623658'
SELECT LEFT(v_test,1) + REPLICATE(0,(CHAR_LENGTH(RTRIM(v_test)) - 1)) AS Colum

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM