在现有列中添加一个数字

时间:2013-01-15 23:06:24

标签: mysql sql sql-update

我想尝试使用此代码将数字添加到SQL行:

SELECT

      RIGHT( '0900000000' + LTRIM( RTRIM( [Leading_Zero_Field_Name] ) ), 10 )

FROM

      [Table_Name]
行号中的

格式化为9个像这样的数字:

098928000
097652183
098037207 

我想要完成的是在第一个0之后添加额外的9它应该是总共10个数字并且应该如下所示:

0998928000
0997652183
0998037207

现在问题是当我像上面这样应用上面的代码时:

UPDATE

      [Table_Name]

SET

      [Leading_Zero_Field_Name] = RIGHT( '0900000000' + LTRIM( RTRIM( [Leading_Zero_Field_Name] ) ), 10 )

我得到了这个结果:

998928000
997652183
998037207

我不知道为什么查询删除第一个0 btw我的行类型是VARCHAR我也尝试使用相同结果的TEXT。

2 个答案:

答案 0 :(得分:1)

RIGHT函数根据需要使用第一个参数中的任意数量的字符。你现有的数字并不需要那么多,只有少数如此改变:

RIGHT( '0900000000' + LTRIM( RTRIM( [Leading_Zero_Field_Name] ) ), 10 )

SELECT RIGHT( '09' + LTRIM( RTRIM( Leading_Zero_Field_Name) ), 10 )

已编辑:使用您提供的输入:

SELECT RIGHT( '09' + LTRIM( RTRIM( 098928000) ), 10 )

结果

0998928000

您的输入是否会改变长度?

答案 1 :(得分:0)

SQL Server具有名为STUFF()的此功能。除了其他方面,它还允许您将字符串插入到特定位置的另一个字符串中。

在您的情况下,返回在每个值的第2个位置插入9的结果将如下所示:

SELECT STUFF(ColumnName, 2, 0, '9') AS NewValue
FROM TableName;

如果你真的想要一个MySQL解决方案,正如标签似乎建议的那样,使用INSERT()函数,其参数集与STUFF()的参数相同。