Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在现有列中添加数字_Mysql_Sql_Sql Update - Fatal编程技术网

Mysql 在现有列中添加数字

Mysql 在现有列中添加数字,mysql,sql,sql-update,Mysql,Sql,Sql Update,您好,我正在尝试使用以下代码向SQL行添加数字: SELECT RIGHT( '0900000000' + LTRIM( RTRIM( [Leading_Zero_Field_Name] ) ), 10 ) FROM [Table_Name] 行中的数字格式为9个数字,如下所示: 098928000 097652183 098037207 0998928000 0997652183 0998037207 UPDATE [Table_Name]

您好,我正在尝试使用以下代码向SQL行添加数字:

SELECT

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

FROM

      [Table_Name]
行中的数字格式为9个数字,如下所示:

098928000
097652183
098037207 
0998928000
0997652183
0998037207
UPDATE

      [Table_Name]

SET

      [Leading_Zero_Field_Name] = RIGHT( '0900000000' + LTRIM( RTRIM( [Leading_Zero_Field_Name] ) ), 10 )
SELECT STUFF(ColumnName, 2, 0, '9') AS NewValue
FROM TableName;
我想要完成的是在第一个0后面加上一个额外的9,它应该是总共10位数字,应该是这样的:

098928000
097652183
098037207 
0998928000
0997652183
0998037207
UPDATE

      [Table_Name]

SET

      [Leading_Zero_Field_Name] = RIGHT( '0900000000' + LTRIM( RTRIM( [Leading_Zero_Field_Name] ) ), 10 )
SELECT STUFF(ColumnName, 2, 0, '9') AS NewValue
FROM TableName;
现在的问题是当我像这样应用上面的代码时:

098928000
097652183
098037207 
0998928000
0997652183
0998037207
UPDATE

      [Table_Name]

SET

      [Leading_Zero_Field_Name] = RIGHT( '0900000000' + LTRIM( RTRIM( [Leading_Zero_Field_Name] ) ), 10 )
SELECT STUFF(ColumnName, 2, 0, '9') AS NewValue
FROM TableName;
我得到这个结果:

998928000
997652183
998037207

我不知道为什么查询会删除前0行,顺便说一句,行的类型是VARCHAR,我也尝试过使用文本,结果相同

右函数根据需要使用第一个参数中的任意多个字符。您现有的数字不需要那么多,只需要几个,所以请更改:

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

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

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

0998928000

输入的长度是否更改?

SQL Server调用了此函数。它允许您在特定位置将一个字符串插入另一个字符串

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

098928000
097652183
098037207 
0998928000
0997652183
0998037207
UPDATE

      [Table_Name]

SET

      [Leading_Zero_Field_Name] = RIGHT( '0900000000' + LTRIM( RTRIM( [Leading_Zero_Field_Name] ) ), 10 )
SELECT STUFF(ColumnName, 2, 0, '9') AS NewValue
FROM TableName;

如果您真的想要一个MySQL解决方案,正如标签所建议的那样,请使用该函数,它的参数集与
STUFF()

的参数集相同。您确定使用
右(…,10)
获得9位数字吗?是,这就是问题所在查询在开始时忽略了零尽管您的语法是针对SQL Server(那些可怕的
[]
括号),但您还是用MySQL标记了它。你用的是哪一种?现在有什么问题?输出是什么?
98928009 97652192 98037216
bad outputI以您的输入为例,使用select语句运行它,并准确地给出了您要查找的输出。请参阅更新的答案。