1

以下のような顧客データがあります

Table= Customer
field= CardNo

のデータCardNo:

%ABC?;9991?
%ABC?;99912?
%ABC?;999123?
%ABC?;888123?

私が望む出力は

9991
99912
999123
888123

ただし、「%ABC?;」をすべて削除したい と「?」CardNo後ろに、フィールド全体に。どうすればいいですか?私はこれを試しましたが成功しませんでした:

UPDATE Customer
SET cardno = RIGHT(cardno, LEN(cardno) - 7)

エラーが発生します:

"Return Error 
Msg 536, Level 16, State 2, Line 1
Invalid length parameter passed to the RIGHT function.
The statement has been terminated."

何が問題で、どうすれば修正できますか?

4

4 に答える 4

1

このようにしてみてください...

UPDATE Table1 Set Cid=Replace(Left(Cid,Len(CID)-1),'%ABC?;','') FROM TABLE1

SQL フィドルのデモ

于 2013-09-18T04:07:38.923 に答える
0

REPLACEはうまく機能します。REPLACE('%ABC?;9991?', '%ABC?', '')

それらをチェーンして 2 番目の ? を削除できます。同じように。

于 2013-09-18T04:05:32.450 に答える
0

パターンのすべての可能性を考慮して、かなり強引な方法を次に示します。

UPDATE Customer
    SET cardno = (case when cardno like '[%]ABC[?];%[?]'
                       then substring(cardno, 6, len(cardno) - 7)
                       when cardno like '[%]ABC[?];%'
                       then substring(cardno, 6, len(cardno) - 6)
                       when cardno like '%[?]'
                       then substring(cardno, len(cardno) - 1)
                       else cardno
                  end)
于 2013-09-18T04:09:08.557 に答える