【SQL Server】invoke-sqlcmd で 重複する列名は~ エラーが発生する

■エラー内容

「invoke-sqlcmd : 重複する列名は、SQL PowerShell では許可されません。列を繰り返す場合、重複する列には Column_Name AS New_Name の形式で列の別名を使用します。」

■原因

invoke-sqlcmdの-InputFileで指定したSQLファイルの文字コードがSJISであったために、as句で付与した列別名が文字化けしてしまったために発生していた。

SQLファイルの文字コードをサクラエディタなどでUTF-8に修正したところ、エラーが解消された。

【SQL Server】全角文字が含まれるデータを取得する

※SQL Server2008にて動作確認

解説

LEN(文字数の取得)と、DATALENGTH(バイト数の取得)の結果が異なる場合、全角文字が含まれていると判断しています。
尚、LEN関数は末尾に半角スペースが含まれる場合、1文字分少なくカウントされるため、RTRIMであらかじめ末尾のスペースを取り除いた上で比較しています。