有没有办法将所有数字的数字替换为" 0"但只保留第一位数字:
示例转换:
`3849` => `3000`
`3001` => `3000`
`3838383838` => `3000000000`
并将其应用于mysql列?
谢谢,
答案 0 :(得分:4)
一个简单的选择是将第一个数字与一系列零连接在一起,其长度比数字的长度小一个。
SELECT
CONCAT(LEFT(col, 1), REPEAT('0', CHAR_LENGTH(col) - 1)) AS new_col
FROM yourTable
请注意,如果col
是数字类型列,那么从技术上讲,我们应该在获取子字符串之前将其强制转换为文本。在这种情况下,MySQL会对文本进行隐式转换,所以从技术上讲,我们不需要正式的转换,但是应该这样做。
在这里演示:
答案 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
答案 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