環境
MSSQLSERVERのDB
Windows11
スペースは表示の都合上下記とします。
全角スペース:■
半角スペース:_
やりたいこと
品名文末の全角スペースを削除したい。
状況
品名データ | 変更後 |
---|---|
サンプル■■■■■■■■■■■■■■■■ | サンプル |
サン■プ■ル■■■■■■■■■■■■■■■■■■■■■■ | サン■プ■ル |
サン_プ■ル■■■■■■■_ | サン_プ■ル |
サンプ■■ル■■■_ | サンプ■■ル |
サ■ンプ■■ル■ | サ■ンプ■■ル |
- 文末の全角スペース、半角スペースのみ除去したい。
- 文中のスペースは保持したい。
- 文末の全角スペースは1~22個まで可変
- 半角スペースは時々含まれている
やったこと
- 全角スペース修正データ確認
- 修正方法調査
- RTRIM関数:文末の半角スペース
- REPLACE関数:全角スペース置換
- 難しい部分をよける
- 品名文末全角スペース3個以上で抽出
- SELECTで試す
- UPDATEテスト
- 作業
調査ログ
【SQL】 RTRIM関数の使い方(右側の空白を削除する)
【SQL】文字列を置換して、データの更新を行う方法
【SQL】5分でわかるCASE式!SELECTもUPDATEも自在に条件分岐させよう
RTRIM
SELECT 文字列, RTRIM(文字列) FROM rtrim_db;
//半角スペース対応、全角スペース非対応
replace
replace(置換したいデータ, '置換前の文字', '置換後の文字')
case文
SELECT
name,
CASE
WHEN name LIKE "%山%" THEN "山がつく"
ELSE "山がつかない"
END
FROM user;
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 '%■■■'
更新処理
本番用
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つは不要だった。