SQL Serverで文字列をトリムする方法は?


回答:


239
SELECT LTRIM(RTRIM(Names)) AS Names FROM Customer

3
これが最も簡単な方法です。返される列にエイリアスを付けることを忘れないでください
Miles

1
@Miles-完全性のためにエイリアスを追加しました。
ベンホフスタイン2008年

2
これが値のトリミングを使用する正しい方法であることを理解しています。しかし、代わりにTRIMだけを使用できたのに、LTRIMとRTRIMの両方を使用する理由を説明できますか?
コードバスター

6
@CodeBuster:2014年のバージョンであっても、SQL ServerにはTRIM関数が定義されていません。
alextansc 2015年

7
SQL Serverは2017バージョンでTRIMを備えています。docs.microsoft.com/en-us/sql/t-sql/functions/trim-transact-sql
goodeye

64

右側をトリミングするには、次を使用します。

SELECT RTRIM(Names) FROM Customer

左側をトリミングするには、次を使用します。

SELECT LTRIM(Names) FROM Customer

両側をトリミングするには、次を使用します。

SELECT LTRIM(RTRIM(Names)) FROM Customer

5
ちなみに、TRIMなしでLTRIM機能とRTRIM機能を含める理由として、Microsoftが考えられる理由は何ですか?それは奇妙です。
ベンホフスタイン2008年

冗長だからです。LTRIM(RTRIM(var))でも同じことができます。
Kibbee、2008年

52
はい、しかしそれは2つの関数呼び出しです。TSQLにはCHARINDEXとSUBSTRINGがあるため、これらはすべて冗長であると言えるかもしれませんが、それはばかげた見方です。
ベンホフシュタイン2008年

9
まったく冗長ではありません。TRIMと呼ばれる単一の関数を提供しないと、ユーザーに構文の負担がかかります。
joelc 14

3
おそらく見落とし、またはすべての機能が-100ポイントで始まるために不安になった機能の1つでした(これは、実際には優先機能セットではなく、一貫性のない機能セットであるIMHOにつながります)。
シリド

7

これは1回限りのデータスクラブの練習だと思います。完了したら、データベースの制約を追加して、将来不良データを防止するようにしてください。

ALTER TABLE Customer ADD
   CONSTRAINT customer_names__whitespace
      CHECK (
             Names NOT LIKE ' %'
             AND Names NOT LIKE '% '
             AND Names NOT LIKE '%  %'
            );

また、問題を引き起こす可能性のある他の文字(タブ、キャリッジリターン、ラインフィードなど)を禁止することも検討してください。

またfamily_name、これらの名前をfirst_name、、などに分割するのもよいでしょう:)


4
SELECT LTRIM(RTRIM(Replace(Replace(Replace(name,'   ',' '),CHAR(13), ' '),char(10), ' ')))
from author

0

SQL Server 2008 R2のssis式では、trim関数があります。

SQL Server Integration Services(SSIS)は、幅広いデータ移行タスクを実行するために使用できるMicrosoft SQL Serverデータベースソフトウェアのコンポーネントです。

このリンクで完全な説明を見つけることができます

http://msdn.microsoft.com/en-us/library/ms139947.aspx

しかし、この関数自体にはいくつかの制限があり、そのページのmsdnでも言及されています。これは SQL Server 2008 R2にあります

TRIM("   New York   ") .The return result is "New York".

3
これは、データベースにバンドルされている製品に含まれていることを除いて、MS SQLとは何の関係もありません。
シリド

-1

「REPLACE」の拡張バージョン:

REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(RTRIM(LTRIM(REPLACE("Put in your Field name", ' ',' '))),'''',''), CHAR(9), ''), CHAR(10), ''), CHAR(13), ''), CHAR(160), '') [CorrValue]
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.