MySQL:将数字数字替换为零

时间:2017-09-04 10:26:46

标签: mysql sql

有没有办法将所有数字的数字替换为" 0"但只保留第一位数字:

示例转换:

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

并将其应用于mysql列?

谢谢,

8 个答案:

答案 0 :(得分:4)

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

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

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

在这里演示:

Rextester

答案 1 :(得分:3)

希望这对你有用

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

答案 2 :(得分:2)

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

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

答案 3 :(得分:2)

带有第二个参数的负数的

TRUNCATE会将小数点左边的数字设置为零:

SELECT TRUNCATE(column_name, -FLOOR(LOG10(column_name)))
FROM table_name;

答案 4 :(得分:1)

select floor(n / POW(10, floor(LOG10(n)))) * POW(10, floor(LOG10(n))) from t

demo

答案 5 :(得分:1)

试试这个:

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

答案 6 :(得分:0)

可以这样做: -

padding

答案 7 :(得分:-1)

尝试使用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