1

1つの列に2つのデータ(名前と姓など)が含まれるデータベースがあります。

フォーマットは大まかにABC-1D23-4F34

最初の3文字であるABCをコピーして新しい列に挿入したいと思います。[full_id]これらの列を呼び出してみましょう[ref_id]

読んでみると、部分文字列はこれを行うことができるように見えますが、私はここで何か間違ったことをしています。

INSERT INTO [ref_id]

SUBSTRING([full_id], 1, 3)

FROM db.Name

お手伝いありがとう。


編集:

更新文字列が機能しました。しかし、データに問題があり、すべてが適切な形式になっているわけではないことがわかりました。

サブストリングが3文字でない場合、null値を書き込むケースを作成する方法はありますか?

再度ありがとう、そして悪いデータを持っていることをお詫びします。

4

3 に答える 3

2

試す

UPDATE Name
SET ref_id = CASE WHEN CHARINDEX('-',full_id) = 4 THEN SUBSTRING(full_id,1,3) ELSE NULL END

これにより、full_id列の最初の3文字を使用して、すべての行のref_id列が設定されます。

于 2012-10-05T12:49:25.830 に答える
1

同じテーブルの列である場合は、更新ステートメントに切り替える必要があります。

UPDATE db.Name SET [ref_id] = SUBSTRING([full_id], 1, 3)
于 2012-10-05T12:49:52.133 に答える
0

おそらくあなたは次のようなものが欲しいでしょう:

Update db.Name set ref_id = substring([full_id], 1,3)
于 2012-10-05T12:51:25.097 に答える