
SQL Server 2008環境です。
文字列の末尾の空白を一括して削除したくて、以下のようなクエリを書きました。
UPDATE TEST_TABLE
SET NAME = REPLACE(RTRIM(REPLACE(StoreBranchName, ' ', ' ')), ' ', ' ')
全角スペースを一度半角スペースにして、RTRIMをかけた後、最後に
半角スペースを全角に直すというものです。
しかし、これだと、元々半角スペースが入っていた場合、そっちまで全角スペースに
なってしまうため悩んでおります。
うまいやり方を教えていただけないでしょうか。
宜しくお願いします。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
素直に
UPDATE TEST_TABLE
SET NAME = substring(StoreBranchName,1,len(StoreBranchName)-1)
where substring(StoreBranchName,len(StoreBranchName),1) = ' '
while @@rowcount > 0
begin
UPDATE TEST_TABLE
SET NAME = substring(StoreBranchName,1,len(StoreBranchName)-1)
where substring(StoreBranchName,len(StoreBranchName),1) = ' '
end
とでもすれば?
と思います。
説明:
末尾1文字が全角空白なら、文字列を末尾1文字を除く文字列に置き換える。
処理結果が0件になるまで繰り返す。
なお、全角空白、半角空白と続くと、半角空白より前は削除されません。
No.3
- 回答日時:
補足
先ほどの回答は可変長文字列の場合です。固定長の場合はNAMEをRTRIM(NAME)とします。
UPDATE TEST_TABLE
SET NAME=LEFT(RTRIM(NAME),LEN(RTRIM(NAME))-1)
where RTRIM(NAME) LIKE '% '
No.2
- 回答日時:
最初にNAMEにSETして
UPDATE TEST_TABLE SET NAME=StoreBranchName
以下の操作を右端の全角スペースが無くなるまで繰り返し実行すれば出来ます。
UPDATE TEST_TABLE SET NAME=LEFT(NAME,LEN(NAME)-1) where NAME LIKE '% '
No.1
- 回答日時:
SQL Serverで使用できる関数が分からないので、とりあえず考え方だけ。
その1
全角スペースを一度半角スペースにしてRTRIMをかけた後、その長さの分だけ元の文字列から取り出す。
その2
文字列の中に連続した半角スペース2個が含まれていないことが保証されるなら、
全角スペースを一度半角スペース2個にして、RTRIMをかけた後、半角スペース2個を全角に直す。
(連続した半角スペース2個が含まれているかもしれないなら、半角スペース3個とか4個とかで)
この回答への補足
ありがとうございます。
半角スペース2個にしてみましたが、動作的には同じく、
半角スペース1個も全角にしてしまっておりました…。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
select文のwhere句に配列を入れ...
-
差し込み後、元データを変更し...
-
select文のwhere句に配列を入れ...
-
1日に1人がこなせるプログラム...
-
access2003 クエリSQL文に...
-
for whichの使い方
-
特定の文字列で列を区切るには?
-
エクセルで最後の文字だけ置き...
-
Access:クエリーにて集計後に...
-
INSERT文でフィールドの1つだ...
-
外部参照してるキーを主キーに...
-
JANコードとPOSコードは同じ?
-
SQLで特定の項目の重複のみを排...
-
Outlook 送受信エラー
-
マイクラPC版のコマンドで効率...
-
SQL文で、合計が0のレコードを...
-
AS400にてサブファイルレコード...
-
複数アドインプログラムをひと...
-
count集計の結果が0の場合でも...
-
SELECT 文 GROUP での1件目を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
顧客データベースを作る場合、...
-
末尾の全角スペースの削除
-
外部結合で取得した項目にNVL関数
-
スペースを検索したい
-
WHERE条件の最終桁のスペースに...
-
あいまい検索で英文字の全角半...
-
SQLServer2005のストアドプロシ...
-
select文のwhere句に配列を入れ...
-
可変長多次元配列でのソートに...
-
ストアドの戻り値で配列を返す方法
-
INSERT文などの列名などの半角...
-
管理工学研究所のデーターベー...
-
DTSパッケージについて
-
SQL SERVER 2005 にて全テーブ...
-
差し込み後、元データを変更し...
-
フィルターかけた後、重複を除...
-
エクセルで最後の文字だけ置き...
-
for whichの使い方
-
特定の文字列で列を区切るには?
-
Outlook 送受信エラー
おすすめ情報