0

您好我正在尝试使用以下代码向 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 获得相同的结果。

4

2 回答 2

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

你的输入长度有变化吗?

于 2013-01-15T23:18:48.550 回答
0

SQL Server 有这个称为STUFF(). 它允许您将一个字符串插入到另一个字符串的特定位置。

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

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

如果你真的想要一个 MySQL 解决方案,正如标签所暗示的那样,请使用该INSERT()函数,其参数集与STUFF().

于 2013-01-16T18:12:11.943 回答