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を削除する理由がわかりませんが、行のタイプは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()。特に、特定の位置にある別の文字列に文字列を挿入できます。

あなたの場合、すべての値の2番目の位置に挿入された結果を返すと9、次のようになります。

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

タグが示唆しているように、本当にMySQLソリューションが必要な場合はINSERT()、パラメーターのセットがのパラメーターと同じである関数を使用しますSTUFF()

于 2013-01-16T18:12:11.943 に答える