1. ホーム
  2. sql

[解決済み] エラー: 名前解析スクリプトで正しい関数に渡された長さのパラメーターが無効です。

2022-01-30 10:15:52

質問

問題が発生しました。以下のコードを実行すると、以下のようなエラーが発生します。

正しい関数に渡された長さが無効なパラメータです。これはどういう意味でしょうか、またどうすれば治るのでしょうか。smith, steve sのような名前を解析して、steve r smithとし、firstname, middlename, lastnameのカラムに格納することです。

UPDATE table5
SET lastName = LEFT(Name, CHARINDEX(', ', Name) - 1), 
    firstname = SUBSTRING(Name, 
                          CHARINDEX(', ', Name) + 2, 
                          CASE 
                            WHEN CHARINDEX(' ', Name, CHARINDEX(', ', Name) + 2) = 0 THEN LEN(Name) + 1 
                            ELSE CHARINDEX(' ', Name, CHARINDEX(', ', Name) + 2)
                          END - CHARINDEX(', ', Name) - 2
                         ),
    middlename= RIGHT(Name, 
                      LEN(Name) - CASE 
                                    WHEN CHARINDEX(' ', Name, CHARINDEX(', ', Name) + 2) = 0 THEN LEN(Name) 
                                    ELSE CHARINDEX(' ', Name, CHARINDEX(', ', Name) + 2) 
                                 END
                    ) 

カラムはvarchar (50)で、firstname, middlename, lastnameカラムもvarchar (50)に設定されています。私はちょっと困っています...事前にありがとうございます

どうすればいいですか?

エラーの原因は CHARINDEX() は0を返し SUBSTRING()

WHERE CHARINDEX(', ', Name) > 0

,