SQL　文末の全角スペースを削除

### 環境
MSSQLSERVERのDB
Windows11

スペースは表示の都合上下記とします。
全角スペース：■
半角スペース：_

### やりたいこと 
品名文末の全角スペースを削除したい。

### 状況
|品名データ|変更後|
|--|--|
|サンプル■■■■■■■■■■■■■■■■|サンプル|
|サン■プ■ル■■■■■■■■■■■■■■■■■■■■■■|サン■プ■ル|
|サン_プ■ル■■■■■■■_|サン_プ■ル|
|サンプ■■ル■■■_|サンプ■■ル|
|サ■ンプ■■ル■|サ■ンプ■■ル|

- 文末の全角スペース、半角スペースのみ除去したい。
- 文中のスペースは保持したい。
- 文末の全角スペースは1～22個まで可変
- 半角スペースは時々含まれている

### やったこと
1. 全角スペース修正データ確認
1. 修正方法調査
    - RTRIM関数：文末の半角スペース
    - REPLACE関数：全角スペース置換
1. 難しい部分をよける
    - 品名文末全角スペース3個以上で抽出
1. SELECTで試す
1. UPDATEテスト
1. 作業

### 調査ログ
[【SQL】 RTRIM関数の使い方（右側の空白を削除する）](https://ichilv.com/sql-rtrim/#toc2)
[【SQL】文字列を置換して、データの更新を行う方法](https://310nae.com/replace-update/)
[【SQL】5分でわかるCASE式!SELECTもUPDATEも自在に条件分岐させよう](https://www.sejuku.net/blog/73639)

```sql:RTRIM
SELECT 文字列, RTRIM(文字列) FROM rtrim_db;
//半角スペース対応、全角スペース非対応
```
```sql:replace
replace(置換したいデータ, '置換前の文字', '置換後の文字')
```

```sql:case文
SELECT
  name,
  CASE
      WHEN name LIKE "%山%" THEN "山がつく"
      ELSE "山がつかない"
  END
FROM user;
```


### SQL文
```SQL:調査用
SELECT	[商品CD],	
		CASE
		WHEN RTRIM(品名) LIKE '%■■■■■■■■■■■■■■■■■■■■■■' THEN RTRIM(REPLACE([品名],'■■■■■■■■■■■■■■■■■■■■■■',''))
		WHEN RTRIM(品名) LIKE '%■■■■■■■■■■■■■■■■■■■■■' THEN RTRIM(REPLACE([品名],'■■■■■■■■■■■■■■■■■■■■■',''))
		WHEN RTRIM(品名) LIKE '%■■■■■■■■■■■■■■■■■■■■' THEN RTRIM(REPLACE([品名],'■■■■■■■■■■■■■■■■■■■■',''))
		WHEN RTRIM(品名) LIKE '%■■■■■■■■■■■■■■■■■■■' THEN RTRIM(REPLACE([品名],'■■■■■■■■■■■■■■■■■■■',''))
		WHEN RTRIM(品名) LIKE '%■■■■■■■■■■■■■■■■■■' THEN RTRIM(REPLACE([品名],'■■■■■■■■■■■■■■■■■■',''))
		WHEN RTRIM(品名) LIKE '%■■■■■■■■■■■■■■■■■' THEN RTRIM(REPLACE([品名],'■■■■■■■■■■■■■■■■■',''))
		WHEN RTRIM(品名) LIKE '%■■■■■■■■■■■■■■■■' THEN RTRIM(REPLACE([品名],'■■■■■■■■■■■■■■■■',''))
		WHEN RTRIM(品名) LIKE '%■■■■■■■■■■■■■■■' THEN RTRIM(REPLACE([品名],'■■■■■■■■■■■■■■■',''))
		WHEN RTRIM(品名) LIKE '%■■■■■■■■■■■■■■' THEN RTRIM(REPLACE([品名],'■■■■■■■■■■■■■■',''))
		WHEN RTRIM(品名) LIKE '%■■■■■■■■■■■■■' THEN RTRIM(REPLACE([品名],'■■■■■■■■■■■■■',''))
		WHEN RTRIM(品名) LIKE '%■■■■■■■■■■■■' THEN RTRIM(REPLACE([品名],'■■■■■■■■■■■■',''))
		WHEN RTRIM(品名) LIKE '%■■■■■■■■■■■' THEN RTRIM(REPLACE([品名],'■■■■■■■■■■■',''))
		WHEN RTRIM(品名) LIKE '%■■■■■■■■■■' THEN RTRIM(REPLACE([品名],'■■■■■■■■■■',''))
		WHEN RTRIM(品名) LIKE '%■■■■■■■■■' THEN RTRIM(REPLACE([品名],'■■■■■■■■■',''))
		WHEN RTRIM(品名) LIKE '%■■■■■■■■' THEN RTRIM(REPLACE([品名],'■■■■■■■■',''))
		WHEN RTRIM(品名) LIKE '%■■■■■■■' THEN RTRIM(REPLACE([品名],'■■■■■■■',''))
		WHEN RTRIM(品名) LIKE '%■■■■■■' THEN RTRIM(REPLACE([品名],'■■■■■■',''))
		WHEN RTRIM(品名) LIKE '%■■■■■' THEN RTRIM(REPLACE([品名],'■■■■■',''))
		WHEN RTRIM(品名) LIKE '%■■■■' THEN RTRIM(REPLACE([品名],'■■■■',''))
		WHEN RTRIM(品名) LIKE '%■■■' THEN RTRIM(REPLACE([品名],'■■■',''))
		WHEN RTRIM(品名) LIKE '%■■' THEN RTRIM(REPLACE([品名],'■■',''))
		WHEN RTRIM(品名) LIKE '%■' THEN RTRIM(REPLACE([品名],'■',''))
		END AS 品名
		
FROM 商品ファイル		
WHERE 品名 LIKE '%■■■'		

```

### 更新処理
```SQL:本番用
UPDATE 商品ファイル		
SET 品名 = CASE
		WHEN RTRIM(品名) LIKE '%■■■■■■■■■■■■■■■■■■■■■■' THEN RTRIM(REPLACE([品名],'■■■■■■■■■■■■■■■■■■■■■■',''))
		WHEN RTRIM(品名) LIKE '%■■■■■■■■■■■■■■■■■■■■■' THEN RTRIM(REPLACE([品名],'■■■■■■■■■■■■■■■■■■■■■',''))
		WHEN RTRIM(品名) LIKE '%■■■■■■■■■■■■■■■■■■■■' THEN RTRIM(REPLACE([品名],'■■■■■■■■■■■■■■■■■■■■',''))
		WHEN RTRIM(品名) LIKE '%■■■■■■■■■■■■■■■■■■■' THEN RTRIM(REPLACE([品名],'■■■■■■■■■■■■■■■■■■■',''))
		WHEN RTRIM(品名) LIKE '%■■■■■■■■■■■■■■■■■■' THEN RTRIM(REPLACE([品名],'■■■■■■■■■■■■■■■■■■',''))
		WHEN RTRIM(品名) LIKE '%■■■■■■■■■■■■■■■■■' THEN RTRIM(REPLACE([品名],'■■■■■■■■■■■■■■■■■',''))
		WHEN RTRIM(品名) LIKE '%■■■■■■■■■■■■■■■■' THEN RTRIM(REPLACE([品名],'■■■■■■■■■■■■■■■■',''))
		WHEN RTRIM(品名) LIKE '%■■■■■■■■■■■■■■■' THEN RTRIM(REPLACE([品名],'■■■■■■■■■■■■■■■',''))
		WHEN RTRIM(品名) LIKE '%■■■■■■■■■■■■■■' THEN RTRIM(REPLACE([品名],'■■■■■■■■■■■■■■',''))
		WHEN RTRIM(品名) LIKE '%■■■■■■■■■■■■■' THEN RTRIM(REPLACE([品名],'■■■■■■■■■■■■■',''))
		WHEN RTRIM(品名) LIKE '%■■■■■■■■■■■■' THEN RTRIM(REPLACE([品名],'■■■■■■■■■■■■',''))
		WHEN RTRIM(品名) LIKE '%■■■■■■■■■■■' THEN RTRIM(REPLACE([品名],'■■■■■■■■■■■',''))
		WHEN RTRIM(品名) LIKE '%■■■■■■■■■■' THEN RTRIM(REPLACE([品名],'■■■■■■■■■■',''))
		WHEN RTRIM(品名) LIKE '%■■■■■■■■■' THEN RTRIM(REPLACE([品名],'■■■■■■■■■',''))
		WHEN RTRIM(品名) LIKE '%■■■■■■■■' THEN RTRIM(REPLACE([品名],'■■■■■■■■',''))
		WHEN RTRIM(品名) LIKE '%■■■■■■■' THEN RTRIM(REPLACE([品名],'■■■■■■■',''))
		WHEN RTRIM(品名) LIKE '%■■■■■■' THEN RTRIM(REPLACE([品名],'■■■■■■',''))
		WHEN RTRIM(品名) LIKE '%■■■■■' THEN RTRIM(REPLACE([品名],'■■■■■',''))
		WHEN RTRIM(品名) LIKE '%■■■■' THEN RTRIM(REPLACE([品名],'■■■■',''))
		WHEN RTRIM(品名) LIKE '%■■■' THEN RTRIM(REPLACE([品名],'■■■',''))
		WHEN RTRIM(品名) LIKE '%■■' THEN RTRIM(REPLACE([品名],'■■',''))
		WHEN RTRIM(品名) LIKE '%■' THEN RTRIM(REPLACE([品名],'■',''))
		END
WHERE 品名 LIKE '%■■■';		

```

### おわりに
- 文末全角スペース1個、2個は対象データ数件だったので個別（ゴリ押し）対応にしました。
- 文中スペースを全角で保持しなくても良い場合なら一律半角スペースに置換してRTRIMでよさそう。
- CASEの下2つは不要だった。